1

我想执行诸如(shell 是 bash)之类的语句

/# source /workspace/scripts/script.sh
/workspace/scripts# source script.sh

在 script.sh 里面我想得到它自己的位置。(script.sh 不会在 PATH 变量中)

我可以readlink -f $0在运行脚本时使用它来执行此操作,但是当我执行此操作时同样不起作用source

希望解决方案依赖于我从哪里运行source命令。(否则pwd就足够了)

这可能吗?

4

2 回答 2

4

不可能在所有情况下 100% 可靠地找到位置。
如果您使用bash,则最好的选择是$BASH_SOURCE可变的。
这个链接对这个主题非常有帮助。

于 2012-05-01T19:06:20.793 回答
0

由于script.sh在您的路径中,您应该能够使用which. 因此,在脚本中,如果$0不是完整路径,您可以执行which $0.

carabiner$ cat ~/bin/test.sh
#!/bin/sh

echo test - $0 $1
which $0

carabiner$ source test.sh
test - test.sh
test.sh is /home/zigdon/bin/test.sh
于 2012-05-01T19:07:33.977 回答