グローバルシェル変数?

グローバルシェル変数?

UNIXシステムへのアクセス権を持つシステム管理者としてrootデフォルトのシェル変数を提供できますか?みんなシステムユーザー?

つまり、唯一のUnixユーザーとしてbashシェルを編集して環境変数を定義できます。.bash_profile

export FOO="BAR"

各ユーザーの個々のシェル変数を編集しなくても、すべてのユーザーにデフォルトの環境変数セットを提供する方法はありますか?特定のユーザーにデフォルト変数を提供する方法はありますか?

ここに長いユーザーがいますが、*nixUNIXシステムの管理方法をたくさんしたことがないので、これがダンプ/素直な質問であれば申し訳ありません。

答え1

あなたの質問を正しく理解したら、システム内のすべてのユーザーがアクセスできるシステム全体の環境変数が必要です。その場合に設定できます/etc/profile。 ~からここ

この/etc/profileファイルはあまり変わりませんが、ユーザーシェルでシステム全体の環境変数を設定するために使用されます。これらの変数はの変数と同じ場合がありますが、.bash_profileこのファイルは初期値を設定するPATHPS1、システム上のすべてのシェルユーザーに使用されます。

答え2

グローバル変数を設定する方法は、ユーザーのシェルに応じてさまざまな方法があり、システムが機能login.confデータベースまたは同様の機能をサポートしているかどうかに応じて、これらの方法はユーザーのシェルに関係なく適用する必要があります。

最も簡単な方法は、以下の関連システムファイルに必要な定義を追加することです/etc。システムで使用されるシェルに応じて、複数のファイルを設定および管理することもできます。たとえば、shandは他のものをbash見つけることを期待し/etc/profilezsh探して/etc/zprofilecshまたは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

関連情報