通过 ln -s 运行时 bash 脚本所在的文件夹

通过 ln -s 运行时 bash 脚本所在的文件夹

在/usr/本地/bin我有一个 'ln -s'/usr/local/foo/bash.script,在后一个脚本中我想知道当前/usr/local/foo目录,以便我可以从该文件夹运行辅助脚本。

现在,我尝试过目录名 $0,但这给了我在/usr/本地/bin文件夹。我应该在脚本得到/usr/local/foo文件夹?

答案1

尝试readlink,例如

d=$0

while readlink $d >/dev/null; do
  d=`readlink $d`
done
echo $d

编辑

我不确定这是否适用于其他 Unix 操作系统,但如果你使用的是 Linux,上述操作可以通过使用

d=`readlink -f $0`

echo $d

readlink --help

相关内容