UNIXシステムへのアクセス権を持つシステム管理者としてroot
デフォルトのシェル変数を提供できますか?みんなシステムユーザー?
つまり、唯一のUnixユーザーとしてbashシェルを編集して環境変数を定義できます。.bash_profile
export FOO="BAR"
各ユーザーの個々のシェル変数を編集しなくても、すべてのユーザーにデフォルトの環境変数セットを提供する方法はありますか?特定のユーザーにデフォルト変数を提供する方法はありますか?
ここに長いユーザーがいますが、*nix
UNIXシステムの管理方法をたくさんしたことがないので、これがダンプ/素直な質問であれば申し訳ありません。
答え1
あなたの質問を正しく理解したら、システム内のすべてのユーザーがアクセスできるシステム全体の環境変数が必要です。その場合に設定できます/etc/profile
。 ~からここ、
この/etc/profile
ファイルはあまり変わりませんが、ユーザーシェルでシステム全体の環境変数を設定するために使用されます。これらの変数はの変数と同じ場合がありますが、.bash_profile
このファイルは初期値を設定するPATH
かPS1
、システム上のすべてのシェルユーザーに使用されます。
答え2
グローバル変数を設定する方法は、ユーザーのシェルに応じてさまざまな方法があり、システムが機能login.conf
データベースまたは同様の機能をサポートしているかどうかに応じて、これらの方法はユーザーのシェルに関係なく適用する必要があります。
最も簡単な方法は、以下の関連システムファイルに必要な定義を追加することです/etc
。システムで使用されるシェルに応じて、複数のファイルを設定および管理することもできます。たとえば、sh
andは他のものをbash
見つけることを期待し/etc/profile
、zsh
探して/etc/zprofile
、csh
またはtcsh
見つけるでしょう。
システムが機能データベースをサポートしている場合は、1つのファイルのみを変更する必要があり、すべての設定が正しく適用されます。たとえば、FreeBSDでは、setenv
それを必要とするすべてのユーザークラスの機能にenvar定義を追加できます。
default:\
:setenv=BLOCKSIZE=K,FOO=BAR:\
:tc=default:
データベースを再構築し、$FOO
次回ログインするときに設定します。
そうでない場合は、login.conf
システムでグローバルにユーザーエクスペリエンスを構成する他の方法があります。
特定のユーザーの変数を設定するには、特定のシェルでサポートされているステートメントまたは同様の構文で$USER
変数値をテストする最初のアプローチを使用する必要があると思います。case
たとえば、次のようにsh
動作し、互換性が必要です。
case $USER in
root) FOO=ROOTBAR;;
*) FOO=USERBAR;;
esac
export FOO