web-dev-qa-db-ja.com

シェルスクリプトMacOS Xアプリ:パスを取得する

Mac OS Xでは、シェルスクリプトアプリケーションの観点から、シェルスクリプトで使用するバンドルディレクトリパスを取得するにはどうすればよいですか? envコマンドを使用すると、アプリの実行パスが/であり、環境変数が役に立たないことが返されます。これを行っているのは、バンドルの一部のリソースにアクセスしたいため、およびアプリが常に/ Applicationsにインストールされているとは限らないためです。

ありがとう!

6
moala

DIR=$(cd "$(dirname "$0")"; pwd)は、シェルスクリプトのディレクトリ名を指定します。シェルスクリプトアプリの場合、これは/path/to/Your Shell script application.app/Contents/MacOSになります。

6
moala

whichを試してみることを提案しましたが、Macアプリケーションでは機能しません。 Macアプリケーションはバンドルされており、シェルはそれらをディレクトリと見なすことを念頭に置いて、 find を使用できます。アプリケーションの拡張子(.app)を追加することを忘れないでください。

1
kiamlaluno

アプリケーションの実行可能ファイルへの絶対パスを取得できる場合、バンドルディレクトリの取得は、メインバンドルを取得する/../ ..を追加するのと同じくらい簡単です。ただし、リソースが必要な場合は、上記の/ Resourcesに追加するだけです。

1
klep

編集:あなたは私の元の答えとは完全に異なる何かを望んでいます。誰かに役立つ場合に備えて、以下に保管してください。 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

それとも、まったく違うものをお探しですか?

0
Jed Daniels