在被另一个bash脚本调用后获取文件的当前目录

Get current directory of file after getting called by another bash script

本问题已经有最佳答案,请猛点这里访问。

所以我有一个bash脚本调用另一个bash脚本。第二个脚本在另一个文件夹中。

1
2
3
4
5
6
7
script1.sh:
"some_other_folder/script2.sh"
# do something

script2.sh:
src=$(pwd) # THIS returns current directory of script1.sh...
# do something

在第二个脚本中,它有一行src=$(pwd),由于我从另一个目录中的另一个脚本调用该脚本,所以$(pwd)返回第一个脚本的当前目录。

是否有任何方法可以使用脚本中的简单命令获取第二个脚本的当前目录而不必传递参数?

谢谢。


请试试这个看看是否有帮助

1
loc=`dirname $BASH_SOURCE`


我相信你在找${BASH_SOURCE[0]}readlinkdirname(尽管你可以使用bash字符串替换来避免dirname)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[jaypal:~/Temp] cat b.sh
#!/bin/bash

./tp/a.sh

[jaypal:~/Temp] pwd
/Volumes/Data/jaypalsingh/Temp

[jaypal:~/Temp] cat tp/a.sh
#!/bin/bash

src=$(pwd)
src2=$( dirname $( readlink -f ${BASH_SOURCE[0]} ) )
echo"$src"
echo"$src2"

[jaypal:~/Temp] ./b.sh
/Volumes/Data/jaypalsingh/Temp
/Volumes/Data/jaypalsingh/Temp/tp/