我正在编写一个运行pwd
命令的shell脚本,并将其输出用于脚本执行的其他一些任务。当我转到特定目录并运行它时,脚本工作正常。但是当我尝试通过提供脚本的完整路径从其他位置运行脚本时,我没有得到所需的输出,因为pwd
命令给出了当前目录的路径。我该如何解决这个问题?无论我从何处运行脚本,我怎样才能写出正确的东西?
当我使用..
到达上一个目录时,正面临同样的问题。我希望脚本根据其位置而不是运行脚本的路径获取路径。如果还有其他一些细节,请告诉我。
答案 0 :(得分:0)
您可以使用$0
提取脚本,然后将其与pwd
$ cat abc.sh
echo $0
DIR1=$(dirname `pwd`/$0)
echo $DIR1
DIR2="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
echo $DIR2
在所有情况下还有其他方法可以实现它: