12

所以我有一个调用另一个 bash 脚本的 bash 脚本。第二个脚本位于不同的文件夹中。

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)返回第一个脚本的当前目录。

有没有办法使用该脚本中的简单命令获取第二个脚本的当前目录而无需传递参数?

谢谢。

4

2 回答 2

5

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

[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/
于 2013-05-31T05:04:46.283 回答
4

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

loc=`dirname $BASH_SOURCE`
于 2013-05-31T05:14:08.387 回答