如何检测我运行 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 上下文中的工作目录

如何在脚本中获取进程ID

调用shell脚本时,获取脚本的当前目录

Shellshell脚本的基础知识

Linux shell获得当前目录、上级目录、目录的最后部分

linux shell脚本如何获取“当前工作路径”,“执行脚本所在路径”,“执行脚本所在路径和执行路径的相对路径”?(当前目录脚本目录脚本路径)