ユーザー環境変数を設定するには? (永久、非セッション)

ユーザー環境変数を設定するには? (永久、非セッション)

これは私を迷惑させる。私はいくつかの提案(すべて他のファイルと構文を使用しています)を見ましたが、そのうち何も機能しませんでした。

特定のユーザーの環境変数を設定するには?私はDebianを握っています。ファイルにABC = "123"を含める必要がある正確な構文は何ですか?

答え1

シェルの初期化ファイルに宣言を入れる必要があります。

  • bash、ash、ksh、または他のBourneスタイルのシェルを使用している場合は、以下を追加できます。

    ABC="123"; export ABC
    

    .profileあなたのファイル()にあります${HOME}/.profile。これはほとんどのUnixインストール、特にDebianのデフォルトです。

    .bash_profileログインシェルがbashの場合(${HOME}/.bash_profile)または代わりに使用できます.bash_login

    メモ:これらのファイルが存在し、ログインシェルがbashの場合、.profilesshまたはテキストコンソールを介してログインするとファイルを読み取ることはできませんが、.bash_profileGUI文書からログインしても読み続けることができます。また、そうでない場合は.bash_profile使用してください.bashrc

  • zshをログインシェルに設定した場合は、~/.zprofile代わりにzshを使用してください~/.profile

  • tcshを使用している場合は、以下を追加してください。

    setenv ABC "123"
    

    ファイル.login${HOME}/.login

  • 別のシェルを使用している場合は、シェルのマニュアルを確認して環境変数を定義する方法と、シェルの起動時にどのファイルが実行されるかを確認してください。

答え2

/etc/environmentファイルを使用して環境変数を設定します。次に、ファイルに次の行を追加します/etc/environment

ABC="123"

アルファベットすべてのユーザーセッションで変数にアクセスできます。変数出力をテストするには、まず次のコマンドを使用して環境変数を更新します。

source /etc/environment

そして実行してくださいecho $ABC

答え3

これはほとんどすべてのシェルで使用できる一般的な手順です。それにもかかわらず、ユーザーが通常どのシェルからログインしているかを知る必要があります。

path="$(grep $USER /etc/passwd | cut -d ':' -f 7)"
shell="$(basename -- "$path")"

その後、このシェルが通常読み取るドットファイルを特定する必要があります。

man $shell

動作できるショートカットは、シェル名を含むドットファイルを一覧表示することです。

ls ~/.*${shell}*

ログイン中にファイルの1つが実際に読み込まれたことを確認するには、各ファイルからファイル名を印刷します。たとえば、次のようになります。

echo .bashrc

ログインすると、どのファイルを読んでいるかを確認し、変更するファイルを決定できます。echo "$0"値は$0シェルがドットファイルを処理する方法によって異なり、誤解を招く可能性があるため、同様の値を使用しないでください。

変数を「永久的に」宣言する場合は、セッションにのみ適用されることに注意してください。変数の値はセッションなしではアクセスできないため、セッション外では意味がありません。 「読み取り専用」を意味する場合、これはシェルによって異なります。吹くあなたはそれを使用することができます:

declare -r VAR

すでに値がある場合、または

declare -r VAR=value

割り当てもします。すべてのシェルにこの機能があるわけではありません。

ほとんどのシェルで変数を宣言するには、変数名([A-Za-z_][A-Za-z0-9_]*)の後に等号(とスペースなし等号の周り)の後に値が続きます(値が単純でない限り、引用符で囲むことをお勧めします[A-Za-z0-9_]+)。たとえば、

name="John Doe"
ip=127.0.0.1
HORRIBLE=1

答え4

正確なコマンドは次のとおりです。

echo 'export ABC = "123"' >> ~/.profile

関連情報