(第一篇文章,请保持温柔。)
在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 }}返回符号链接的路径,而不是链接脚本的路径。
有什么办法解决吗?