3
bash / dash、インタラクティブ/非インタラクティブ、ログイン/非ログインのすべての組み合わせが環境変数を取得できるように、環境変数をどこにエクスポートする必要がありますか?
質問の動機は次のとおりです。 UnityデスクトップでUbuntu 12.04 LTS 2を使用しています。.bashrcファイルで、PATH変数にいくつかのディレクトリを追加し、JAVA_HOMEなどのいくつかの環境変数を定義します。端末(bash、デフォルトのシェルを実行)からアプリケーションを起動すると、これはうまく機能しますが、Unityランチャーを使用するいくつかのショートカットでは、#!/ bin / shを使用するように定義されているように見えるアプリを実行します。は/ bin / dashのエイリアスであり、〜/ .bashrcまたは〜/ .profileの内容を取得しません。 これらのショートカットをすべて変更して、/ bin / shの代わりに/ bin / bashを使用して、強制的に.bashrcの変更を反映させることができると思いますが、それは本当にハックに思えます。 Ubuntu 12.04(デフォルト)が/ bin / shを/ bin / dashにエイリアスし、デフォルトのシェルが/ bin / bashである場合、PATHを変更し、必要に応じて環境変数を定義できる単一の場所がありますこれらすべての状況下で存在するために: 非ログインbashシェルを作成するときはいつでも(端末を単一で使用して) ログインbashシェルを作成するとき(たとえば、sshを介してリモートでログインするとき) Unityアプリケーションランチャーを使用する場合(ランチャーが/ bin / shを使用する場合)。 cronジョブが実行されるとき(/ SHELL = / bin / shが/ etc / crontabにある場合)。 私が正しく理解していれば、私はそれを推測しています: (1)/(2)はbashであり、(3)/(4)はダッシュであるため、(1)/(2)と(3)/(4)は異なります。 (1)と(2)は、ログインシェルであるかどうかによって、bashがロードすることを選択するファイルが異なるため、異なります。 …