これは私を迷惑させる。私はいくつかの提案(すべて他のファイルと構文を使用しています)を見ましたが、そのうち何も機能しませんでした。
特定のユーザーの環境変数を設定するには?私は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の場合、
.profile
sshまたはテキストコンソールを介してログインするとファイルを読み取ることはできませんが、.bash_profile
GUI文書からログインしても読み続けることができます。また、そうでない場合は.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