如何检测我运行 shell 脚本的当前目录?
Posted
技术标签:
【中文标题】如何检测我运行 shell 脚本的当前目录?【英文标题】:How to detect the current directory in which I run my shell script? 【发布时间】:2010-12-21 12:16:46 【问题描述】:如何检测运行我的 shell 脚本的目录名称(或者更好的是整个路径)?
【问题讨论】:
对于 Bash,请参阅:Getting the source directory of a Bash script from within。 【参考方案1】:什么外壳?什么操作系统?
初学者可以试试
man pwd
$PWD
【讨论】:
如果你只想要目录的名称,而不是完整路径,请阅读 man basename。【参考方案2】:我相信这是最便携的方式:
dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)
【讨论】:
【参考方案3】:这并不像看起来那么简单。查看this question 和this
【讨论】:
问题是关于确定脚本执行目录,但你的答案是确定脚本文件的名称/目录。 @Mat 确实!那时候一定是误会了。正在删除。 您能补充一点信息吗?见meta.stackexchange.com/questions/8231/…【参考方案4】:替代方法
pid=$$
path=$(ps -eo pid,args| awk -vp=$pid '$1~pprint $3')
case "$path" in
./* ) pwd;;
* ) echo $path;;
esac
【讨论】:
以上是关于如何检测我运行 shell 脚本的当前目录?的主要内容,如果未能解决你的问题,请参考以下文章
运行 Node 脚本时更改当前 shell 上下文中的工作目录
Linux shell获得当前目录、上级目录、目录的最后部分
linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录脚本目录脚本路径)