在 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,/[^/]*$,,'`
我正在写一个简单的脚本:
#!/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,/[^/]*$,,'`