首页 > 解决方案 > 获取 bash 执行 bash 脚本的位置

问题描述

我希望能够使用~/script_name.sh任何目录中的命令执行位于我的主目录中的 bash 脚本,然后在脚本中获取运行它的目录。

例如。我在目录/foo/bar/baz中,然后执行/foo/script.sh,它会打印出来/foo/bar/baz

pwd$0/$BASH_SOURCE分别给我我的 shell 开始的目录和我的主目录中脚本的路径。

标签: bashshellunixsh

解决方案


不要调用外部命令pwd,而是考虑使用$PWD。如果您想防止某些流氓代码显式更改PWD,请先执行一个cd .(这是一个内部命令),它会恢复PWD到正确的值。


推荐阅读