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

Ego*_*gen 1 bash posix

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

现在,我尝试了dirname $0,但这给了我/usr/local/bin文件夹。我应该在bash.script 中使用什么来获取/usr/local/foo文件夹?

Vok*_*iba 5

尝试readlink,例如

d=$0

while readlink $d >/dev/null; do
  d=`readlink $d`
done
echo $d
Run Code Online (Sandbox Code Playgroud)

编辑

我不确定这是否适用于其他 Unix 操作系统,但是如果您使用的是 linux,则可以通过使用来简化上述操作

d=`readlink -f $0`

echo $d
Run Code Online (Sandbox Code Playgroud)

readlink --help
Run Code Online (Sandbox Code Playgroud)