シェルに依存しないユーザーごとに環境変数を設定する

シェルに依存しないユーザーごとに環境変数を設定する

bash使用されているシェル ( 、)とは独立してzsh、ユーザーごとに永続的な環境変数を設定するにはどうすればよいですか?fish

答え1

編集: によるとディストリビューションやシェルに依存しない環境変数を設定する最良の方法は何ですか?これに対する最善の解決策は~/.pam_environment

~/.profile編集:すべてのシェルで読み取られないため、ハッキーな解決策に戻りました。

すべてのシェルのソース/etc/profile

つまり、 では/etc/profile、次のような行を書くことができます。

. $HOME/.custom-profile

~/.custom-profile次に、各ユーザーごとに変数を追加します

答え2

すべてのシェルは、ユーザーごとに異なるプロファイル ファイルを読み取ります (zsh: ~/.profile、bash: ~/.bash_profile、csh には rc ファイルのみがあるなど)。したがって、これらの候補となるファイルをすべて変更する必要があります。

ただし、ほとんどのシェルは少なくとも ~/.profile の読み取りに戻ります (この点を指摘してくれた @terdon に感謝します)。そのため、そこにエクスポートを配置できます。

「ログイン」は通常、uid と gid を変更できるプロセス (通常は、root として実行されているログイン マネージャー) によって実行されるため、生成されたプログラム (シェルなど) の環境を定義するのはこれらのプログラムの役割です。

しかし、ログイン マネージャーは複数存在し (GDM/lightdm/KDM/... ビジュアル ログイン マネージャー、getty、logind/loginct、ssh、getty...)、それぞれ異なるファイルから構成を読み取るため、一貫した方法はありません。

関連情報