被另一个bash脚本调用后获取文件的当前目录[重复]
Posted
技术标签:
【中文标题】被另一个bash脚本调用后获取文件的当前目录[重复]【英文标题】:Get current directory of file after getting called by another bash script [duplicate] 【发布时间】:2013-05-26 20:19:16 【问题描述】:所以我有一个 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)
返回第一个脚本的当前目录。
有没有什么方法可以在第二个脚本中使用一个简单的命令来获取第二个脚本的当前目录,而无需传递参数?
谢谢。
【问题讨论】:
这是一个 SO 常见问题解答:Can a Bash script tell what directory it's stored in? 对术语的评论。当前工作目录是指每个进程的单个运行时值——它正在运行的目录(即回答问题,“.”在哪里)。问这个问题的更好方法是,“我如何找到执行第二个脚本的目录”。 另见***.com/questions/59895/…。 【参考方案1】:试试这个看看有没有用
loc=`dirname $BASH_SOURCE`
【讨论】:
谢谢,成功了!【参考方案2】:我相信您正在寻找 $BASH_SOURCE[0]
、readlink
和 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/
【讨论】:
以上是关于被另一个bash脚本调用后获取文件的当前目录[重复]的主要内容,如果未能解决你的问题,请参考以下文章