Linuxで環境変数を設定する方法。 Linux の環境変数。 システム環境変数

2.2. 環境変数

オペレーティング システムは、 環境変数 (環境変数)。 これらの変数はペアです 名前 - 値 . 名前は文字で始めることができ、文字、数字、およびアンダースコアで構成されます。

コマンド ラインで変数の値を置き換えるには、変数名の前に $ 記号を付けます。

$ echo $USER ゲスト

変数が設定されていない場合は、空の文字列が返されます。

割り当てステートメントは、変数の値を設定するために使用されます (Bourne のようなシェルの場合)。

$ TEST=テスト

または組み込みの set ステートメント (C ライクの場合):

$ セット TEST=テスト

引数なしの set コマンドは、環境に設定されているすべての変数の値を一覧表示します。

$ set COLUMNS=197 CVS_RSH=ssh DIRSTACK=() EUID=1000 GROUPS=() G_BROKEN_FILENAMES=1 HISTFILE=/home/guest/.bash_history HISTFILESIZE=1000 HISTSIZE=1000 HOME=/home/guest HOSTNAME=myhost HOSTTYPE=i686 IFS =$" \t\n" INPUTRC=/etc/inputrc KDEDIR=/usr KDEDIRS=/home/guest/.local/ KDE_IS_PRELINKED=1 KDE_NO_IPV6=1 LANG=ru_RU.UTF-8 LESSOPEN="|/usr/bin/ lesspipe.sh %s" LINES=65 LOGNAME=guest ....

変数は、特定のプロセスに対してローカルにすることも、セッションに対してグローバルにすることもできます。 変数の前にコマンドを付けることで、変数のローカル値を設定できます。

$ TEST=test1 sh -c "echo $TEST" test1

Bourne のようなインタープリター (sh、ksh、bash、zsh、pdksh...) の場合、env インタープリターの組み込みコマンドを呼び出して、セッションの一連の変数の内容を評価できます。 C-Shell クローン インタープリター (csh、tcsh など) を使用する場合:

$ env HOSTNAME=myhost TERM=xterm SHELL=/bin/bash HISTSIZE=1000 KDE_NO_IPV6=1 SSH_CLIENT=172.16.0.9 50487 22 QTDIR=/usr/lib/qt-3.3 QTINC=/usr/lib/qt-3.3/include SSH_TTY =/dev/pts/6 USER=guest MOZILLA_CERTIFICATE_FOLDER=/home/guest/.evolution/ KDEDIR=/usr MAIL=/var/spool/mail/guest PATH=/usr/games:/usr/local/bin:/bin :/usr/bin:/home/guest/bin INPUTRC=/etc/inputrc PWD=/home/guest KDE_IS_PRELINKED=1 LANG=ru_RU.UTF-8 KDEDIRS=/home/guest/.local/ SSH_ASKPASS=/usr/libexec /openssh/gnome-ssh-askpass SHLVL=1 HOME=/home/guest LOGNAME=guest QTLIB=/usr/lib/qt-3.3/lib CVS_RSH=ssh SSH_CONNECTION=172.16.0.9 50487 172.16.2.9 22 LESSOPEN=|/usr /bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/bin/env

コマンドセット シェルスクリプトと呼ばれるバッチ ファイルにリンクできます。特別な種類のコメントの最初の行は、このセットを実行するためのコマンド インタープリターを示します。 たとえば、 test という名前のテキスト エディターで次の内容のファイルを作成してみましょう。

#!/bin/sh echo TEST 変数: echo $TEST

このプログラムは、テキスト メッセージ "Variable TEST: " と変数 TEST の値 (設定されている場合) を標準出力に出力します。 コマンドインタープリターにパラメーターとして渡すことにより、コマンドラインから実行できます。

$ sh テスト変数 TEST:

export (Bourne) または setenv (C-SHell) ステートメントを使用して、変数をグローバルにすることができます。

$ export TEST=test1 $ sh test 変数 TEST: test1

このプログラムを実行するために変数のローカル値を設定するには、変数の前にコマンドを付けます。

$ TEST=test2 sh test 変数 TEST: test2

環境変数は、unset ステートメントを使用して削除されます。

原文: Linux Fundamentals
作者: ポール・コバウト
発行日:2014 年 10 月 16 日
翻訳: A.パニン
譲渡日:2014年12月13日

第 12 章 シェル変数

この章では、シェルを使用して環境変数を操作する方法を学びます。 これらの変数は通常、アプリケーションが機能するために必要です。

ドル記号 ($)

シェルによって解釈されるもう 1 つの重要な記号は、ドル記号 $ です。 シェルは、ドル記号の後の文字列に一致する名前を持つ環境変数を探し、指定された文字と変数名をその変数の値に置き換えます (変数が存在しない場合は何も置き換えません)。

以下は、$HOSTNAME、$USER、$UID、$SHELL、および $HOME 変数の使用例です。 $ echo これは $SHELL シェルです これは /bin/bash シェルです $ echo 指定された $SHELL シェルはマシンで使用されています $HOSTNAME 指定された /bin/bash シェルはマシンで使用されています RHELv4u3.localdomain $ echo user ID $USER is $UID The user ID paul is 500 $ echo My home directory is $HOME My home directory is /home/paul

大文字と小文字の区別

この例は、シェル変数名が大文字と小文字を区別することを示しています! $ echo Hello $USER Hello ポール $ echo Hello $user Hello

変数の作成

この例では、$MyVar 変数を作成し、その値を設定します。 次に、echo コマンドを使用して、作成された変数の値を確認します。 $ MyVar=555 $ echo $MyVar 555 $

名言

二重引用符を使用すると、コマンド ラインで変数を展開することもできますが、一重引用符を使用すると、そのような展開ができなくなります。 $ MyVar=555 $ echo $MyVar 555 $ echo "$MyVar" 555 $ echo "$MyVar" $MyVar

bash シェルは、二重引用符で囲まれた文字列では変数をその値に置き換えますが、単一引用符で囲まれた文字列ではそうしません。 [メール保護]:~$ 都市=バートンビル [メール保護]:~$ echo "今、$city にいます。" 現在、バートンビルにいます。 [メール保護]:~$ echo "今、$city にいます。" 今、私たちは $city にいます。

コマンドの設定

set コマンドを使用して、環境変数を一覧表示できます。 Ubuntu および Debian システムでは、set コマンドは、シェル変数のリストの後にシェル関数もリストします。 したがって、これらのシステムで作業するときに環境変数のリストのすべての要素に慣れるために、set | を使用することをお勧めします。 もっと。

設定解除コマンド

unset コマンドを使用して、シェル環境から変数を削除する必要があります。 $ MyVar=8472 $ echo $MyVar 8472 $ unset MyVar $ echo $MyVar $

環境変数 $PS1

$PS1 環境変数は、シェルのグリーティング形式を設定します。 フォーマット文字列を入力する際、バックスラッシュを使用して、ユーザー名を表示する \u や作業ディレクトリ名を表示する \w などの特殊文字をエスケープできます。 bash シェルのマニュアル ページには、特殊文字の完全なリストがあります。

以下の例では、$PS1 環境変数の値を数回変更しています。 [メール保護]:~$ PS1=プロンプト プロンプト promptPS1="プロンプト " プロンプト プロンプト PS1="> " > > PS1="\ [メール保護]\h$" [メール保護]$ [メール保護]$PS1="\ [メール保護]\h:\W$" [メール保護]:~$

致命的なエラーを回避するために、通常のユーザーに表示されるシェル プロンプトには緑を使用し、root ユーザーに表示されるシェル プロンプトには赤を使用できます。 次の行を .bashrc ファイルに追加して、通常のユーザーに表示されるプロンプトに緑色を使用します。 # paul が作成した色付きのシェルプロンプト RED="\[\033" WHITE="\[\033" GREEN="\[\033" BLUE="\[\033" export PS1="$(debian_chroot:+( $ debian_chroot))$GREEN\ [メール保護]$青\h$白\w\$"

$PATH 環境変数

$PATH 環境変数は、シェルがコマンドの実行に必要なバイナリを検索するファイル システム ディレクトリを設定します (コマンドが組み込みコマンドまたはコマンド エイリアスでない場合)。 この変数には、コロンで区切られたディレクトリ パスのリストが含まれます。 [$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:

シェルは、現在のディレクトリで実行可能なバイナリ ファイルを検索しません。 (現在のディレクトリで実行可能ファイルを検索する機能は、PC-DOS を実行しているコンピューターに格納されたデータへの無許可アクセスの最も単純なメカニズムでした)。 シェルで現在のディレクトリ内の実行可能ファイルを検索する場合は、シンボルを追加する必要があります。 シェルの $PATH 変数の値である行の最後まで。 $パス=$パス:. $ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:. $

su - コマンドの代わりに su コマンドを使用すると、シェルの $PATH 変数の値が異なる場合があります。これは、後者のコマンドを使用すると、ターゲット ユーザーの環境変数の値を追加で使用できるためです。 たとえば、通常、/sbin ディレクトリは、$PATH 変数の値によって表される root ユーザーのディレクトリのリストに追加されます。 $ su パスワード: # echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin # exit $ su - パスワード: # echo $PATH /usr/local/sbin:/usr/ local/bin:/sbin:/bin:/usr/sbin:/usr/bin: #

環境コマンド

env コマンドをパラメーターなしで使用すると、エクスポートされた環境変数が一覧表示されます。 このコマンドとオプション付きの set コマンドの違いは、set コマンドは、子シェルにエクスポートされない変数を含む、すべての環境変数を一覧表示することです。

さらに、env コマンドを使用して「純粋な」シェル (環境を継承しないシェル) を起動することもできます。 env -i コマンドは、子シェルの環境をクリアします。

この例では、起動時に bash シェルが $SHELL 環境変数を設定することに注意してください。 $ bash -c "echo $SHELL $HOME $USER" /bin/bash /home/paul paul $ env -i bash -c "echo $SHELL $HOME $USER" /bin/bash $

env コマンドを使用して、$LANG 変数または同じ bash シェルのその他の環境変数の値を 1 つのコマンドで設定できます。 次の例では、この機能を使用して、$LANG 変数の値がパターン ファイル検索エンジンの動作に与える影響を示しています (このメカニズムの詳細については、パターン ファイル検索の章を参照してください)。 $ env LANG=C bash -c "ls File" Filea Fileb $ env LANG=en_US.UTF-8 bash -c "ls File" Filea FileA Fileb FileB $

エクスポート コマンド

export コマンドを使用して、シェル変数を他のシェルにエクスポートできます。 以下の例では、このコマンドは環境変数を子シェルにエクスポートします。 $ var3=three $ var4=four $ export var4 $ echo $var3 $var4 three four $ bash $ echo $var3 $var4 four

ただし、このコマンドを使用すると、変数は親シェルにエクスポートされません (以下は前の例の続きです)。 $ export var5=five $ echo $var3 $var4 $var5 four five $ exit exit $ echo $var3 $var4 $var5 three four $

変数の区切り記号

これまでのところ、bash シェルがドル記号で始まる変数を解釈し、アンダースコアではない英数字以外の最初の文字が現れるまで解釈を続けることを見てきました。 状況によっては、この動作が問題になることがあります。 次の例に示すように、中括弧を使用してこの問題を解決できます。 $ prefix=Super $ echo こんにちは $prefixman と $prefixgirl こんにちはと $ echo こんにちは $(prefix)man と $(prefix)girl こんにちは スーパーマンとスーパーガール $

バインドされていない変数

以下の例では、$MyVar 変数の値を表示しようとしていますが、変数が存在しないため成功しません。 デフォルトでは、変数がバインドされていない (存在しない) 場合、シェルは何も出力しません。 $ エコー $MyVar $

ただし、使用されている変数が存在しない場合にエラーを生成するために使用できる nounset シェル オプションがあります。 [メール保護]:~$ セット -u [メール保護]:~$ echo $Myvar bash: Myvar: バインドされていない変数 [メール保護]:~$ セット +u [メール保護]:~$ エコー $Myvar [メール保護]:~$

bash シェルでは、 set -u は set -o nounset と同じであり、類推すると、 set +u は set +o nounset と同じです。

練習: シェル変数

2. 値が 42 の変数 answer を作成します。

3. $LANG 変数の値を $MyLANG 変数の値にコピーします。

4. 現在使用されているシェル変数を一覧表示します。

5. エクスポートされたすべてのシェル変数を一覧表示します。

6. env および set コマンドの出力に、変数に関する情報がありますか?

7. 回答変数を破棄します。

8. 2 つの変数を作成し、そのうちの 1 つをエクスポートします。

9. エクスポートされた変数の値を子インタラクティブ シェルに出力します。

10. 変数を作成し、それに値「Dumb」を割り当ててから、同じ方法で値「do」を使用して別の変数を作成します。 echo コマンドと作成した 2 つの変数を使用して、"Dumbledore" という単語を出力します。

11. bash シェルの man ページで、バックスラッシュでエスケープされた制御文字のリストを見つけます。 PS1 変数の値に制御文字を追加して、シェル hello で時刻を表示します。

正しい実践手順: シェル変数

1. echo コマンドを使用して、文字列「Hi」の後に自分の名前を出力します。 (bash シェル変数を使用してください!)

シェルにおけるパラメーターの概念 バッシュ従来のプログラミング言語の変数の概念に似ています。 パラメータ名 (または識別子) は、英字、数字、およびアンダースコア (この単語の最初の文字のみを数字にすることはできません) で構成される単語、数字、または次の特殊文字のいずれかにすることができます。 * , @ , # , ? , - (ハイフン)、 $ , ! , 0 , _ (下線)。

パラメータに値が割り当てられている場合、そのパラメータは設定されている、または設定されていると言われます。 値は空の文字列にすることもできます。 パラメータの値を表示するには、記号を使用します。 $ 彼の名前の前に。 はい、チーム

$エコー名

単語を表示する 名前、そしてチーム

$echo $name

name 変数の値を返します (もちろん、設定されている場合)。

5.6.1 パラメータのバリエーション

パラメータは次の 3 つのクラスに分けられます。 定位置パラメーター、特殊パラメーター(その名前は、上に挙げた特殊文字です) および シェル変数.

名前 (識別子) 定位置パラメーター 1 つ以上の数字で構成されます (ただし、単一のゼロではありません)。 位置パラメーターの値は、シェルが開始されたときに指定された引数です (最初の引数は位置パラメーター 1 の値などです)。 組み込みコマンドを使用して、位置パラメーターの値を変更できます。 設定. これらのパラメーターの値は、シェルが関数の 1 つを実行している間にも変更されます (これについては、以下で説明します)。 秒 5.8).

特別オプションは、以下のように差し替え(差し替え)を行うテンプレートです。

表 5.2.特別なオプション。

パラメータ

交代ルール

最初のものから始まる位置パラメータに置き換えられます。 置換が二重引用符内で行われる場合、このパラメーターは、特殊な IFS 変数 (以下で説明します) の最初の文字で区切られたすべての位置パラメーターで構成される 1 つの単語に置き換えられます。 つまり、``$*"" は ``$1c$2c..."" と同等です。ここで、c は IFS 変数の値の最初の文字です。 IFS が null または設定されていない場合、オプションはスペースで区切られます

最初のものから始まる位置パラメータに置き換えられます。 置換が二重引用符内で行われる場合、各パラメーターは個別の単語に置き換えられます。 だから、 [メール保護]"" は ""$1"" ""$2"" と同等です ... 位置パラメータがない場合、値は割り当てられません (@ パラメータは単に削除されます)

定位置パラメーターの数の 10 進数値に置き換えられます

フォアグラウンドで実行されている最後のプログラム チャネルの終了ステータスに置き換えられます

(ハイフン)

組み込みコマンドで設定されたフラグ値の現在のセットに置き換えられます 設定またはシェル自体を起動するとき

シェルのプロセス ID (P ID) に置き換えられます

最後に実行されたバックグラウンド (非同期で実行された) コマンドのプロセス ID (P ID) に置き換えられます

実行中のシェルまたはスクリプトの名前に置き換えられます。 もしも バッシュ$0 はこのファイルの名前と同じです。 それ以外の場合、この値はシェルへのフル パスと同じです。

(下線)

前に実行されたコマンドの最後の引数に置き換えられます (パラメーターまたは変数の場合は、その値が置き換えられます)。

上記の表にリストされている特別なパラメーターは、参照のみが可能であるという点で異なります。 それらに値を割り当てることはできません。

変数シェルの観点からは、これは名前で示されるパラメーターです。 値は、次の演算子を使用して変数に割り当てられます

$name=値

どこ 名前は変数の名前で、 価値— それに割り当てられた値 (空の文字列の場合もあります)。 変数名は数字と文字のみで構成でき、数字で始めることはできません。 値は任意のテキストです。 値に特殊文字が含まれている場合は、引用符で囲む必要があります。 もちろん、割り当てられた値にはこれらの引用符は含まれていません。 変数が設定されている場合は、組み込みのシェル コマンドを使用して削除できます。 設定解除.

値が割り当てられたすべてのセットシェル変数のセットは、環境またはシェル環境と呼ばれます。 コマンドで表示できます 設定パラメータなし(おそらく、パイプラインを整理する必要があるだけです 「セット|レス」)。 このコマンドの出力には、すべての環境変数がアルファベット順に一覧表示されます。コマンドを使用する代わりに、特定の 1 つの変数の値を表示するには 設定(目的の変数がまだ検索および検索されている出力で)コマンドを使用できます

$echo $name

(ただし、この場合、関心のある変数の名前を知っている必要があります)。

コマンドの出力に表示される変数の中で 設定、非常に興味深い変数がいくつかあります。 たとえば、RANDOM 変数に注意してください。 コマンドを連続して数回実行すると

$ エコー $RANDOM

毎回新しい値を取得します。 実際には、この変数は 0 ~ 32,768 の範囲のランダムな整数を返します。

5.6.2 シェルプロンプト

非常に重要な変数の 1 つに名前が付けられています。 PS1. この変数は、プロンプトの種類を指定します。 バッシュユーザーからの次のコマンドを待っているときに表示されます。 デフォルトでは、この変数は「\s-\v\$」に設定されています。 実際に バッシュさまざまな状況で使用される 4 つのプロンプトがあります。 変数 PS1シェルがコマンドを待機しているときに発行されるプロンプト文字列のタイプを指定します。 変数によって設定された二次プロンプト PS2、実行中のコマンドまたはプログラムの継続に必要なデータをユーザーが入力するのをシェルが待機しているときに表示されます。 デフォルト変数 PS2」という意味を持つ >" . コマンドを実行したときに、このプロンプトが既に表示されている場合があります。 キーボードからファイルにデータを入力します。 別の例はコマンドです ftp、その開始後、招待状もこの形式になります。

可変プロンプト PS3、コマンドで使用 選択する. 可変プロンプト PS4、各コマンドの前に出力されます。 バッシュ進行状況を監視します。 デフォルト値は「 + ".

そのような欲求がある場合は、変数の型を変更できます PS1PS2. この場合、キーボードから入力された任意の文字と、プロンプト文字列を形成するときにテーブルに従ってデコードされるいくつかの特殊文字を使用できます。 5.3 (たとえば、それらの一部のみが示されています。完全なリストについては、ユーティリティのマニュアル ページを参照してください) バッシュ) .

表 5.3.招待状を構成する特殊文字

シンボル

その意味

ビープ音 (ASCII コード 07)

水、10 月 17 日など、日、月、日の形式の日付。

最初のドットまでのホスト名

完全なホスト名

24 時間形式の現在の時刻: HH:MM:SS (時:分:秒)

12 時間形式の現在の時刻: HH:MM:SS

午前/午後 12 時間形式の現在の時刻

シェルを開始したユーザーの名前

現在の作業ディレクトリの完全な名前 (ルートから開始)

現在の作業ディレクトリ (パスが指定されていません)

シェルがスーパーユーザーとして実行されている場合は # 文字。 $ シェルが通常のユーザーによって開始された場合。

\nnn

8 進コード nnn を持つ文字

改行(改行)

シェル名

現在のチーム番号

バックスラッシュ (バックスラッシュ)

一連の印刷不能文字の開始 (この文字を使用して、一連の端末制御文字をプロンプト テキストに含めることができます)

印刷不能文字列の終わり

コマンド履歴におけるこのコマンドのシーケンス番号

現在のコマンド番号 (現在のセッション内で実行されているコマンドのシーケンス番号) は、コマンド履歴リスト内のこのコマンドの番号とは異なる場合があります。後者には、コマンド履歴ファイルに保存されたコマンドが含まれているためです。

ヒントを定義する変数の値がシェルによって読み取られた後、パラメーター展開、コマンド名と演算式での置換、および単語分割の規則に従って、その値に置換を行うことができます。 これらのルールについては、以下のセクションで説明します。 5.7.

たとえば、コマンドを実行した後 (文字列にスペースがあるため、引用符が必要です)

# PS1="[\ [メール保護]\h \W]\$"

標準プロンプトには、角括弧、ユーザー名、記号が表示されます @ 、コンピュータ名、スペース、現在のディレクトリ名 (パスなし)、閉じ角括弧、記号 $ (単純なユーザーがシェルで実行している場合) または # (シェルがルートとして実行されている場合)。

5.6.3 変数

もう 1 つの非常に重要な変数の名前は . ディレクトリへのパスのリストを指定します。 バッシュコマンド ラインでファイルへのフル パスが指定されていない場合に、ファイル (特に、コマンドを含むファイル) を検索します。 このリストの個々のディレクトリはコロンで区切られています。 デフォルト変数 ディレクトリを含む /usr/local/bin、/bin、/usr/bin、/usr/X11R6/bin、つまり、次の形式があります。

/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:

このリストにディレクトリを追加するには、次のコマンドを実行します。

# PATH=$PATH:new_path.

検索時、シェルはディレクトリを PATH 変数にリストされている順序で正確に検索します。

PATH 変数にドットを追加することで、このリストに現在のディレクトリを含めることもできることに注意してください。 ただし、これはセキュリティ上の理由から推奨されません。攻撃者は、root ユーザーが頻繁に実行するコマンドの 1 つと同じ名前のコマンドを public ディレクトリに置くことができますが、まったく異なるアクションを実行します (特に現在のディレクトリが検索パス リストの先頭)。

5.6.4 変数 IFS

この変数は、コマンド ラインが実行される前にシェルによって実行されるコマンド ライン変換の単語分割操作で使用される内部フィールド セパレータを指定します。 この変数のデフォルト値は "<Пробел><Символ_ новой_ строки>".

5.6.5 現在のディレクトリとホーム ディレクトリ

現在のディレクトリの名前は環境変数 (名前は PWD) に格納され、この変数の値はプログラムが開始されるたびに変更されます。 CD(また、Midnight Commander など、他の方法で現在のディレクトリを変更する場合も)。

同様に、プロセスを開始したユーザーのホーム ディレクトリの完全修飾名 (パス付き) は、HOME 変数に格納されます。

5.6.6 コマンド 輸出

シェルがプログラムまたはコマンドを実行すると、いくつかの環境変数がそれらに渡されます。 シェルから起動されたプロセスに環境変数を渡すには、特別なコマンドを使用して設定する必要があります 輸出、つまり代わりに

$name=値

書き留めておくべき

$エクスポート名=値

この場合、シェルから起動されたすべてのプログラム (シェル自体のセカンダリ インスタンスを含む) は、この方法で定義された変数にアクセスできます。つまり、名前で値を呼び出すことができます。

V. Kostromin (rus-linux dot net の kos) - 5.6. パラメータと変数。 シェル環境

環境変数 ( 環境変数) は、スクリプトやプログラム全体で変数の共通値を格納するために使用されます。 このような変数は、特定のターミナル シェルの操作期間やユーザー セッションの期間など、一定期間設定することができます。また、環境変数をグローバル レベル (システム全体) で設定することもできます。 .

環境変数

$HOME
変数には、現在のユーザーのホーム ディレクトリへのパスが含まれます。 $USER
現在のユーザー名 $PATH
シェルが実行可能プログラムを検索するためのディレクトリーのリスト。 $PWD
現在の作業ディレクトリへのパス (または pwd)。 例: dir_path=$(pwd) 。 $SHELL
デフォルトのインタープリター $RANDOM
変数がアクセスされるたびに乱数 0..32767 を生成します。 $SECONDS
秒単位の時間。 シェルの開始以来。 $? 前のコマンドの結果。 $ホスト名
コンピュータ名 $HISTFILE
$IFS インタープリター履歴ファイルへのパス
コマンド、パラメータ、配列要素の区切り文字のリスト (デフォルト: スペース、タブ、改行) $PS1
通訳プロンプト文字列テンプレート。

環境変数の一時的な設定

セッション期間の環境変数の設定:

# 新しいプロセスの場合 env varname=value [command] # 現在のシェルとそのすべてのサブプロセスの場合 export varname=value [command]

変数の値は、システムが再起動されるまで保持されます。

定数値の設定

システムレベルの環境変数は、/etc/environment ファイルを介して設定されます。

環境="dev"

~/.bashrc または ~/.bash_profile を介してユーザー固有の環境変数を設定します。

PATH="$(パス):/home/user/bin:"

注意!

~/.bash_profile ファイルは、インタープリターが -l オプションで開始されたときに実行されます。 ローカルにログインすると、このファイルは読み取れません!

また、変更が有効になるのはセッションが再開された後であることも覚えておく必要があります。

環境変数の値を表示する

環境変数の値を表示するには、printenv コマンドを使用します。

Printenv<имя_переменной>

#シェル、#bash、#環境

環境変数は、シェルで定義され、実行時にプログラムまたはスクリプトで必要とされる特別な変数です。 これらは、システムまたはユーザーが定義できます。 システム定義変数は、システムによって設定される変数です。

たとえば、コマンド PWD現在の作業ディレクトリを格納するために使用される非常に一般的なシステム変数です。 ユーザー変数は通常、現在のシェルに対して一時的に、または永続的に設定されます。 環境設定の構成と変更の全体的な概念は、一連のファイルといくつかのコマンド、およびさまざまなシェルを中心に展開します。

より正確には、環境変数には次の 3 つのタイプがあります。

1. ローカル環境変数

現在のセッションに対して定義されます。 これらの環境変数は、リモート ログイン セッションであるかローカル ターミナル セッションであるかにかかわらず、現在のセッションの間使用されます。 これらの変数はどの構成ファイルにも指定されておらず、特別なコマンド セットを使用して作成および削除されます。

2. ユーザー環境変数

これらは、ユーザーがローカル ターミナル セッションを使用してログインするたびに、またはそのユーザーがリモート ログイン セッションを使用してログインする場合にロードされる、ユーザー固有の変数です。 これらの変数は通常、次の構成ファイルから設定およびロードされます。 .bashrc,.bash_profile,.bash_login,。プロフィール、ユーザーのホーム ディレクトリに存在します。

3. システム環境変数

これらは、システム全体、つまりそのシステムに存在するすべてのユーザーが使用できる環境変数です。 これらの変数は、次のディレクトリとファイルにあるシステム全体の構成ファイルに存在します。 /etc/環境,/etc/profile、/etc/profile.d/、/etc/bash.bashrc. これらの変数は、システムの電源がオンになり、ユーザーがローカルまたはリモートでログインするたびにロードされます。

共有およびシステム全体の構成ファイルについて

ここでは、システムとユーザーの両方の環境変数を含む上記のさまざまな構成ファイルについて簡単に説明します。

.bashrc

このファイルは、ユーザーが新しいローカル セッションを作成するたびにロードされるユーザー ファイルです。 簡単に言えば、新しい端末を開きます。 このファイルで作成されたすべての環境変数は、新しいローカル セッションが開始されるたびに有効になります。

.bash_profile

このファイルにリストされている環境変数は、ユーザーがリモートでログインするたびに、つまり次のコマンドで呼び出されます。 ssh. このファイルが存在しない場合、システムはファイルを探します .bash_loginまた 。プロフィール.

/etc/環境

このファイルは、環境変数を作成、編集、または削除するためのシステム ファイルです。 このファイルで作成された環境変数は、ローカルとリモートの両方で、グローバルにすべてのユーザーがシステム全体で使用できます。

/etc/bash.bashrc

システムファイル .bashrc. このファイルは、ユーザーがローカル ターミナル セッションを開くたびに、ユーザーごとに 1 回ダウンロードされます。 このファイルで作成された環境変数は、すべてのユーザーが使用できますが、ローカル ターミナル セッションを介してのみ使用できます。 このコンピューター上のユーザーがリモート ログイン セッションを介して削除されると、これらの変数は表示されなくなります。

/etc/プロファイル

このファイルで作成されたすべての変数は、システム上のすべてのユーザーが使用できますが、そのユーザー セッションがリモートで、つまりリモート ログイン経由で呼び出された場合に限ります。 このファイル内の変数は、ローカル ログイン セッションでは使用できません。 ユーザーがローカル システムで新しい端末を開いたとき。

ノート。 システム全体またはユーザー定義の構成ファイルを使用して作成された環境変数は削除できますが、それらのファイルからしか削除できません。 これらのファイルを変更するたびに、ログアウトまたは再度ログインするか、端末で次のコマンドを入力して変更を有効にします。

$ソース

Linux でのローカルまたはセッション環境変数の設定または削除

ローカル環境変数は、次のコマンドを使用して作成できます。

$ var=value または $ export var=value

これらの変数はセッション変数であり、現在の端末セッションに対してのみ有効です。 これらの環境変数をクリアするには、次のコマンドを使用できます。

1.使い方 環境

デフォルトのコマンドは「 環境» 現在の環境変数をすべてリストします。 ただし、キーと一緒に使用すると " -私」、次に、すべての環境変数を一時的にクリアし、ユーザーがすべての環境変数がない場合に現在のセッションでコマンドを実行できるようにします。

$ env -i ... コマンド引数 ...

ここで var = value は、このコマンドでのみ使用する任意のローカル環境変数と一致します。

$ env -i バッシュ

すべての環境変数が一時的にクリアされる bash シェルを開始します。 ただし、シェルを終了すると、すべての変数が復元されます。

2. キャンセルの使用

ローカル環境変数をクリアするもう 1 つの方法は、次のコマンドを使用することです。 設定解除. ローカル環境変数を一時的に無効にするには、

$未設定

どこ、 変数名削除またはクリアするローカル変数の名前です。

3.変数名を次のように設定します 空の値

あまり一般的ではないもう 1 つの方法は、クリアする変数の名前を空の値に設定することです。つまり、 VAR=(等号の後には何もありません - Enter キーを押してください)。 これにより、アクティブな現在のセッションのローカル変数の値がクリアされます。

ノート。 システム変数を変更することはできますが、変更は現在のセッションにのみ反映され、永続的ではありません。

Linux でユーザーおよびシステム環境変数を作成する方法を学ぶ

このセクションでは、以下の例を使用して、Linux でローカル、ユーザー、およびシステム環境変数を設定または無効にする方法を見ていきます。

1. Linux でのローカル変数の設定と削除。

a) ここでは、ローカル変数を作成します VAR1任意の値に設定します。 次に使用します 設定解除最後に、この変数を削除します。

$ VAR1="TecMint is best site for Linux Articles" $ echo $VAR1 $ unset VAR1 $ echo $VAR1

b) ローカル変数を作成する別の方法は、コマンドを使用することです 輸出. 作成されたローカル変数は、現在のセッションで使用できます。 変数を無効にするには、変数を空の値に設定するだけです。

$ export VAR="TecMint is best site for Linux Articles" $ echo $VAR $ VAR= $ echo $VAR

c) ここでは、ローカル変数を作成しました VAR2そしてその値を設定します。 次に、コマンドを実行するために、すべてのローカルおよびその他の環境変数を一時的にクリアして、コマンドを実行しました" 環境 -私"。 ここでこのコマンドはシェルを開始しました バッシュ、他のすべての環境変数をクリアします。 」と入力した後、 出口» 呼び出されたシェルで バッシュすべての変数が復元されます。

$ VAR2="TecMint is best site for Linux Articles" $ echo $VAR2 $ env -i bash $ echo $VAR2

2. Linux でのユーザー環境変数の設定と削除。

a) ファイルを変更する .bashrcホーム ディレクトリで、追加する環境変数をエクスポートまたは設定します。 その後、ファイルを実行して変更を有効にします。 次に、有効になった変数 (私の場合は「CD」) が表示されます。 この変数は、このユーザーの新しいターミナルを開くたびに使用できますが、リモート ログイン セッションでは使用できません。

$ vi .bashrc

.bashrc.

Export CD="This is TecMint Home"

次のコマンドを実行して新しい変更を有効にし、変数をテストします。

$ source .bashrc $ echo $CD

この変数を削除するには、ファイル内の行を削除するだけです。 .bashrcそして再びシェルに入ります。

b) リモート ログイン セッションで使用できる変数を追加するには、ファイルを変更します。 .bash_profile.

$ vi .bash_profile

次の行をファイルに追加します .bash_profile.

Export VAR2="これは TecMint ホームです"

リモートを使用して実行すると、変数が使用可能になります sshそのユーザーのログインですが、新しいローカル端末を開いている間はログインしません。

$ source .bash_profile $ echo $ var2

ここ VAR2最初は利用できませんが、を使用してリモートでログインすると sshユーザーオン ローカルホスト、変数が使用可能になります。

$ ssh $ エコー $ var2

この変数を削除するには、ファイル内の行を削除するだけです .bash_profile追加したファイルを再読み込みします。

ノート。 これらの変数は、現在のユーザーがログインするたびに使用できますが、他のユーザーは使用できません。

3. Linux でのシステム環境変数の設定と削除。

a) ログイン以外のシステム変数 (つまり、ユーザーのいずれかが新しい端末を開いたときにすべてのユーザーが使用できるが、マシン上のユーザーへのリモート アクセスがあるときは使用できない変数) を追加するには、この変数をファイルに追加します。 /etc/bash.bashrc.

Export VAR="これはシステム全体の変数です"

次に、ファイルを再度読み取ります。

$source /etc/bash.bashrc

この変数は、新しい端末を開いたときにすべてのユーザーが利用できるようになります。

$ echo $VAR $ sudo su $ echo $VAR $ su - $ echo $VAR

ここでは、root ユーザーと通常ユーザーの両方が変数を使用できます。 これは、別のユーザーとしてログインすることで確認できます。

b)コンピューターのユーザーがリモートでログインしたが、ローカルコンピューターで新しいターミナルを開かなかったときに、いくつかの環境変数を使用できるようにする場合は、ファイルを編集する必要があります- /etc/プロファイル .

Export VAR1="これは、リモート セッション専用のシステム全体の変数です"

変数を追加した後、ファイルを再読み込みするだけです。 その後、変数が使用可能になります。

$source/etc/profile $echo $var1

この変数を削除するには、ファイルから行を削除します /etc/プロファイルそして読み直す。

c) ただし、すべてのユーザーのリモート ログイン セッションとローカル セッションの両方で、システム全体で利用できる環境に変数を追加する場合は、変数を次の場所にエクスポートするだけです。 /etc/環境。

Export VAR12="私はどこでも利用可能です"

その後、ファイルを再読み込みするだけで、変更が有効になります。

$ source /etc/environment $ echo $VAR12 $ sudo su $ echo $VAR12 $ exit $ ssh localhost $ echo $VAR12

ここでは、環境変数が通常のユーザー、root ユーザー、およびリモート ログイン セッションで使用できることがわかります。

この変数をクリアするには、ファイル内のエントリを削除するだけです /etc/環境ファイルを再読み込みします。

ノート。 ファイルを再読み込みすると変更が有効になります /etc/環境. ただし、そうでない場合は、ログアウトして再度ログインする必要がある場合があります。

以下のコメントで記事について質問してください。

記事を読んでいただきありがとうございます。

質問がある場合は、コメントで質問してください。

ブログの更新を購読して、情報通信の世界の最新情報を入手してください!

多くの IT 担当者の間でより多くのことを知り、その知識で目立つようにするには、Cisco Academy の Cisco コース、Linux Professional Institute の Linux コースにサインアップしてください。

  • 練習に都合のよい時間をお伺いし、調整いたします。勉強する時間が足りないことは承知しております。
  • 個別のスケジュールをご希望の場合は、ご相談の上、実施させていただきます。
  • 自己組織化の明確な期限を設定します。 パーソナル キュレーターがご連絡を差し上げ、質問にお答えし、試験に合格するための期限を厳守するようアドバイスし、やる気を起こさせます。
  • また、次のこともお手伝いします。

    トピックの続き:
    ソリューション

    多くのユーザーは、さまざまなブラウザーを使用しているときに、空白のページまたは必要のないページから開始する必要があるという事実に直面することがよくあります....