在 Mac OS X 中,从 shell 脚本应用程序的角度来看,如何获取其捆绑目录路径以用于 shell 脚本? 使用 env 命令时,它返回应用程序的执行路径是 /,并且没有环境变量有帮助。我这样做是因为我想访问包的一些资源,并且因为应用程序并不总是安装在 /Applications 中。
谢谢!
答案1
DIR=$(cd "$(dirname "$0")"; pwd)
将给出 shell 脚本的目录名称。对于 shell 脚本应用程序,这将是/path/to/Your shell script application.app/Contents/MacOS
。
答案2
我建议尝试一下which
,但它不适用于 Mac 应用程序。您可以使用寻找,请记住,Mac 应用程序是捆绑的,并且 shell 将它们视为目录。不要忘记添加应用程序的扩展名 (.app)。
答案3
如果您可以获取应用程序的可执行文件的绝对路径,那么获取包目录就很简单了,只需在其后附加 /../.. 即可获取主包。但是,如果您想要资源,只需将其添加到上面的 /Resources 即可。
答案4
编辑:你想要的东西与我原来的答案完全不同。保留它以防对任何人有用。现在我认为你正在寻找命令basename
,虽然我仍然不确定,我认为你需要指定更多关于你正在做的事情的信息,然后我们才能给你一个合适的答案。
我不确定我是否理解了这个问题。您是否尝试找到应用程序目录?例如,对于计算器,您想要计算器.app 所在的目录?
jed@jed-osx:~$ ls -la /Applications/Calculator.app/
total 0
drwxr-xr-x 3 root wheel 102 Jun 22 11:27 .
drwxrwxr-x+ 46 root admin 1564 Jun 18 23:19 ..
drwxr-xr-x 10 root wheel 340 Jun 22 11:26 Contents
jed@jed-osx:~$ ls -la /Applications/Calculator.app/Contents/
total 8
drwxr-xr-x 10 root wheel 340 Jun 22 11:26 .
drwxr-xr-x 3 root wheel 102 Jun 22 11:27 ..
lrwxr-xr-x 1 root wheel 28 Apr 17 15:15 CodeResources -> _CodeSignature/CodeResources
-rw-r--r-- 1 root wheel 1201 May 6 10:26 Info.plist
drwxr-xr-x 3 root wheel 102 Jun 22 11:26 MacOS
-rw-r--r-- 1 root wheel 8 Jul 6 2009 PkgInfo
drwxr-xr-x 4 root wheel 136 Jul 6 2009 PlugIns
drwxr-xr-x 42 root wheel 1428 Apr 17 15:28 Resources
drwxr-xr-x 3 root wheel 102 Jun 22 11:26 _CodeSignature
-rw-r--r-- 1 root wheel 451 May 6 10:27 version.plist
或者您正在寻找一些完全不同的东西?