Retrive the file system position where a bash script is saved
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
In the bash script how do I know the script file name?
我经常需要bash脚本的文件系统来引用其他需要的资源。通常在shebang行后的行中使用以下代码。它设置一个名为"scriptpos"的变量,该变量包含脚本的当前路径
1 | scriptPos=${0%/*} |
它工作得很好,但是是否有更直观的东西来取代外壳扩展?
有
1 | scriptPos=$(dirname"$0") |
一种选择是
1 | scriptPos=$(dirname $0) |
这是以一个额外的过程为代价的,但更具自我描述性。如果脚本直接处于当前状态,则输出会有所不同(我认为这样做更好):
1 2 3 4 5 6 7 8 9 10 11 | #!/bin/bash scriptPos=$(dirname $0) echo '$0:' $0 echo 'dirname:' $scriptPos echo 'expansion:' ${0%/*} $ bash tmp.bash $0: tmp.bash dirname: . expansion: tmp.bash |
更新:试图解决JM666指出的缺点。
1 2 | #!/bin/bash scriptPos=$( v=$(readlink"$0") && echo $(dirname"$v") || echo $(dirname"$0") ) |