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 

还有其他的方法来实现它在所有情况下: