0

Cocoa プログラムから起動した NSTask /bin/sh からコマンド ライン ツール (BBEdit の「bbdiff」) を実行しようとしました。

ターミナルから正常に起動できたにもかかわらず、これは失敗しました。

原因を突き止めました。bbdiffです/usr/local/bin

ターミナルで使用される PATH は

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

ただし、NSTask によって起動される bash シェルで使用される PATH は、

/usr/bin:/bin:/usr/sbin:/sbin

違いはなぜですか?/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/binUNIXで使用される通常のパスだと思いました

4

1 に答える 1

0

NSTask ドキュメントが言うように (強調を追加):

タスクは、いくつかの項目 (現在のディレクトリ、標準入力、標準出力、標準エラー、および環境変数の値) の現在の値によって定義された環境内で動作します。デフォルトでは、NSTask オブジェクトはそれを起動したプロセスから環境を継承します。

したがって、NSTask は、Cocoa アプリの起動に使用される PATH を取得します。

于 2012-12-10T18:02:11.563 に答える