在 Bash 中,找不到 dirname 命令

In Bash, the dirname command is not found

我正在写一个简单的脚本:

#!/bin/bash
PATH=$(readlink -f [=11=])
echo $PATH
DIR_PATH=$(dirname $PATH)
echo $DIR_PATH

然而,输出是:

/home/kalyani/Desktop/Linux/Proj/script.sh
./script.sh:line 6: dirname: command not found

我检查了所有其他可用的解决方案,并尝试了每一个,并且 none 成功了。我已经阅读了关于类似问题的其他线程,但它仍然不起作用。

可能是什么问题?

此外,如果我输入 'which dirname',我会得到 /usr/bin/dirname。

如果我回显 $PATH,我得到:

/home/kalyani/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

因为 /usr/bin 在我的 $PATH 变量中,所以应该可以找到它,如果我在终端中输入它就可以找到它,但是如果它在 bash 脚本中,那么它就会给出麻烦我了我能做什么?

一旦你执行

PATH=$(readlink -f [=10=])

您的 PATH 现在是链接文件的名称,它不是目录,因此您的 PATH 中不再有任何内容

使用不同的变量。如果您试图确保您的路径 包含 当前文件的位置,请使用

me="$(readlink -f ${BASH_SOURCE:-[=11=]})"
PATH=$PATH:${me%/*}

如果您没有使用 bash,

me=`readlink -f "[=12=]"`
PATH="$PATH:"`dirname $me`

PATH="$PATH:"`readlink -f "[=13=]" | sed 's,/[^/]*$,,'`