Linux中的绝对路径和相对路径
问题描述:
我正在编写一个shell脚本,该脚本运行pwd
命令并将其输出用于脚本执行的其他任务。当我转到特定目录并运行它时,该脚本完全正常工作。但是当我试图通过给出脚本的完整路径从其他位置运行脚本时,由于pwd
命令给出了当前目录的路径,所以我没有得到所需的输出。我该如何解决这个问题?我怎么能写一些能保持正确的东西,而不管我从哪里运行脚本?
当我使用..
到达上一个目录时,会遇到同样的问题。我希望脚本根据其位置采取路径,而不是脚本正在运行的路径。请让我知道是否有其他一些细节要求。Linux中的绝对路径和相对路径
答
您可以使用$0
提取脚本,然后用结合它pwd
$ cat abc.sh
echo $0
DIR1=$(dirname `pwd`/$0)
echo $DIR1
DIR2="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo $DIR2
还有其他的方法来实现它在所有情况下: