Mac OS Xでは、シェルスクリプトアプリケーションの観点から、シェルスクリプトで使用するバンドルディレクトリパスを取得するにはどうすればよいですか? envコマンドを使用すると、アプリの実行パスが/であり、環境変数が役に立たないことが返されます。これを行っているのは、バンドルの一部のリソースにアクセスしたいため、およびアプリが常に/ Applicationsにインストールされているとは限らないためです。
ありがとう!
DIR=$(cd "$(dirname "$0")"; pwd)
は、シェルスクリプトのディレクトリ名を指定します。シェルスクリプトアプリの場合、これは/path/to/Your Shell script application.app/Contents/MacOS
になります。
which
を試してみることを提案しましたが、Macアプリケーションでは機能しません。 Macアプリケーションはバンドルされており、シェルはそれらをディレクトリと見なすことを念頭に置いて、 find を使用できます。アプリケーションの拡張子(.app)を追加することを忘れないでください。
アプリケーションの実行可能ファイルへの絶対パスを取得できる場合、バンドルディレクトリの取得は、メインバンドルを取得する/../ ..を追加するのと同じくらい簡単です。ただし、リソースが必要な場合は、上記の/ Resourcesに追加するだけです。
編集:あなたは私の元の答えとは完全に異なる何かを望んでいます。誰かに役立つ場合に備えて、以下に保管してください。 basename
コマンドを探していると思いますが、まだはっきりしていません。まともな情報を提供する前に、実行していることについてさらに情報を指定する必要があると思います。回答。
質問がよくわかりません。アプリケーションディレクトリを見つけようとしていますか?例えば。電卓の場合、Calculator.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
それとも、まったく違うものをお探しですか?