在Bash中,找不到dirname命令



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

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

然而,输出是:

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

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

可能是什么问题?

此外,如果我键入"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 $0)

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

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

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

如果你不使用bash,

me=`readlink -f "$0"`
PATH="$PATH:"`dirname $me`

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

相关内容

  • 没有找到相关文章

最新更新