2

ENV ハッシュにアクセスしてシェル変数を読み取る Ruby で書かれた TextMate バンドルがあります。

この変数の読み取りに成功する場合と、見つからない場合があります。パターンが思いつきませんでした。

TextMate バンドルに表示されるシェル変数は何によって決まりますか?

アップデート

あはは!コマンド ラインから TextMate を起動すると、機能します。ドックから起動すると、機能しません (後でコマンド ラインからディレクトリを開いても)。

問題は、これらの場合に TextMate が異なる環境を選択する理由と、それらを同一にする方法があるかということです。

4

1 に答える 1

2

Textmate は、シェルからではなく、launchd を介して起動されます。

シェルから直接何かを実行すると、$PATH が移動します (open -a Textmate は機能しません。open は環境を Textmate に渡しません)。

これを回避する方法は、environment.plist、launchctl、または launchd.conf です。

OS Xで環境変数を設定しますか?

アップデート

編集/etc/launchd.confして再起動すると、変更が有効になります。各行は、のような launchctl コマンドにすることができますsetenv VAR_NAME "VAR_VALUE"。次に、このファイルをlaunchctl your_file.

再起動が面倒ですが。また、ユーザーごとの環境設定が必要な場合は、これは良くありません。Apple は~/.launchd.conf、ユーザー固有の設定に使用できると提案していますが、まだこの機能を実装していません。

LoginHook と LogoffHook を使用して、ログイン時にスクリプトを実行するように設定できます ( Apple のドキュメントを参照)。または、LaunchAgents を使用します。LaunchAgent の設定方法の詳細については、この Macworld postの nicksay の投稿を参照してください。

ログイン中にlaunchctl setenvコマンドが機能しないようです。現在、これに頭を悩ませています。

私は基本的にあなたが今日抱えているのと同じ問題に遭遇しました (Makefile バンドルは LIBRARY_PATH を gcc に渡しません)。そして今、ログイン時に変数割り当てのファイルを読み取り、現在のコピーを保存する Python スクリプトを作成しています。環境とそのファイルを割り当てて、ログアウト時にすべての変数をアンロードします。それはまた、更新オプションが必要であることを思い出させます。完了したら、ここに github リポジトリへのリンクを含むコメントを投稿します。それが機能する場合、それはです。

于 2011-04-11T19:15:12.543 に答える