如何检测我运行shell脚本所在的当前目录?

21

如何检测我的Shell脚本所在的目录名称(或更好的是整个路径)?


有关Bash,请参见:从内部获取Bash脚本的源目录 - kenorb
4个回答

21

使用什么shell?使用什么操作系统?

首先尝试:

man pwd
$PWD

如果你只想要目录的名称而不是完整路径,可以阅读basename手册。 - Roger Pate

17

我认为,这是最具可移植性的方法:

dir=$(cd -P -- "$(dirname -- "$0")" && pwd -P)

3

问题是关于确定脚本执行目录,但你的答案是用于确定脚本文件的名称/目录。 - Mat Gessel
@Mat 确实!当时一定误解了。删除。 - Pekka
你能再添加一些信息吗?请参阅https://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers - Marco

0

替代方法

pid=$$
path=$(ps -eo pid,args| awk -vp=$pid '$1~p{print $3}')
case "$path" in
    ./* ) pwd;;
    * ) echo $path;;
esac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接