如何确定启动Finder执行的.command脚本的符号链接?

时间:2018-07-16 20:52:45

标签: bash macos symlink

(第一篇文章,请保持温柔。)

在bash脚本中,我正在使用:

#!/bin/bash
baseDir=$(dirname "$BASH_SOURCE")

我已将脚本另存为/path/to/location/script.command,以便在macOS中双击Finder将执行该脚本。

我已经从其他多个位置创建了指向该脚本的符号链接,但是无论位置如何,$baseDir始终以/path/to/location的形式返回。

但是,如果我将脚本另存为/path/to/location/script.sh,并在其中创建符号链接,例如在/path/for/symlink中,则$baseDir返回为我想要的结果,/path/for/symlink。 / p>

我的假设是,.sh的符号链接将始终从符号链接的位置运行所述脚本,而.command的符号链接将始终从链接脚本的位置运行所述脚本。

不幸的是,this solution无法正常工作,因为我需要解析符号链接,而this solution无法正常工作,因为$0返回的内容与$BASH_SOURCE相同。

根据下面查尔斯的建议,我已经搜索了this FAQ,但是除非我缺少任何内容,否则所有建议都将需要$0$BASH_SOURCE或{{1 }}返回符号链接的路径,而不是链接脚本的路径。

有什么办法解决吗?

0 个答案:

没有答案