GUIアプリケーションを起動する前に、環境変数KEY="value"
を利用できるようにする必要があります。ランチャーファイル(Ubuntuのデスクトップとサイドバーにアイコンを配置するファイル)の値はExec=/path/to/executable/file
です。
ZSHを使用する場合、アプリケーションランチャーをクリックするか、シェルに/ path/to/executeable/fileと直接入力するかにかかわらず、そのアプリケーションで使用できるように、この変数をどこに定義する必要がありますか?
コマンドラインプロンプトで、ランチャーをクリックする前にKEY="value"
とexport KEY="value"
の両方を入力しようとしましたが、機能しなかったようです。また、~/.zshrc
でこれらの行の両方を試し、シェルからsource ~/.zshrc
を実行してから、ランチャーをもう一度クリックしましたが、それも機能しませんでした。
どのファイルに入れるべきですか? ~/.zshenv
、~/.zprofile
、~/.zshrc
、および~/.zlogin
の選択肢があると思います。
(ボーナスポイントについては、export
を使用する必要がありますか?)
(ランチャーから起動されたときに変数がアプリケーションで使用可能になる前に、少なくともログアウトして再度ログインする必要がありますか?)
ターミナルシェル(インタラクティブな非ログインシェル)およびデスクトップランチャーアイコン(Xサーバーが開始されている)でも変数を定義する必要があるため非対話型ログインシェル)によって、定義を~/.zshenv
に配置する必要があります。
はい。デスクトップアイコンで新しい環境を利用できるようにするには、xセッションを再起動する必要があります。このような起動スキームを想像してみてください:Graphical Login -> Use your default Shell to start the X session -> Desktop -> Shell terminal / Launch program via icon
、それで子シェルはXセッションを開始するために使用される親から環境を継承します。そのシェルは、Xセッションへのログイン時にRCファイルを1回だけ読み取ります。
ボーナスポイントの場合。これはマニュアルが言っていることです:
export [ name[=value] ... ]
指定された名前は、後で実行されるコマンドの環境への自動エクスポート用にマークされています。 (...)
変数を~/.zshenv
で定義する場合、このファイルはデフォルトで読み込まれるため、原則としてexport
を省略できます。唯一の違いは、RCファイルをソースしないzsh -f
でシェルを開始した場合に発生します。ちょっとしたデモンストレーション:
% foo=foo_defined
% export bar=bar_defined
% print -l $foo $bar
foo_defined
bar_defined
% zsh -f
% print -l $foo $bar
bar_defined
%
I.e。エクスポートされた$bar
のみが、後続のシェルで定義されます。しかし、念のため、export
を使用してください。これが有害な場合は考えられません。
@mpyが正しいとは思わないので、exportステートメントを省略できます。エクスポートの有無によって、そのシェルから起動されたプロセスが環境変数を継承するかどうかが決まります。エクスポートしない場合、xserverは環境変数を継承しません
imalison ~ ABCD='14'
imalison ~ python -c "import os; print os.environ.get('ABCD')"
None
imalison ~ export ABCD='14'
imalison ~ python -c "import os; print os.environ.get('ABCD')"
14