Linuxシステムのシェル環境を強化および標準化するために、環境変数が存在します。システムが設定する標準の環境変数がありますが、独自の環境変数を設定したり、必要に応じてデフォルトの環境変数を変更したりすることもできます。
[無料ダウンロード:高度なLinuxコマンドのチートシート。 ]
env
から開始 コマンド
環境変数を確認したい場合は、env
を使用してください コマンドを実行し、出力の左端にあるすべて大文字の単語を探します。これらは環境変数であり、それらの値は右側にあります:
$ env
LS_COLORS=(long output)
LANG=en_US.UTF-8
HISTCONTROL=ignoredups
HOSTNAME=rhel8t
XDG_SESSION_ID=5
USER=khess
SELINUX_ROLE_REQUESTED=
PWD=/home/khess
HOME=/home/khess
SSH_CLIENT=192.168.1.94 53911 22
SELINUX_LEVEL_REQUESTED= XDG_DATA_DIRS=/home/khess/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
SSH_TTY=/dev/pts/1
MAIL=/var/spool/mail/khess
TERM=xterm-256color
SHELL=/bin/bash SELINUX_USE_CURRENT_RANGE=
SHLVL=1
LOGNAME=khess
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
XDG_RUNTIME_DIR=/run/user/1000 PATH=/home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
HISTSIZE=1000
LESSOPEN=||/usr/bin/lesspipe.sh %s _=/usr/bin/env
LS_COLORS
の出力を省略しました とても長いので変数です。システムでこのコマンドを試して、完全な出力がどのように表示されるかを確認してください。
多くの環境変数が設定され、/etc/profile
からエクスポートされます。 ファイルと/etc/bashrc
ファイル。 /etc/profile
に行があります 読みます:
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
すべての新しいアカウントの環境変数に永続的な変更を加えるには、/etc/skel
にアクセスしてください .bashrc
などのファイル 、および既存のものを変更するか、新しいものを入力します。新しいユーザーを作成する場合、これらの/etc/skel
ファイルは新しいユーザーのホームディレクトリにコピーされます。
シェルレベルの調査(SHLVL
)
単一の環境変数の値を呼び出すには、SHLVL
を使用して次のコマンドを入力します (シェルレベル)例として:
$ echo $SHLVL 1
この変数は、開いているサブシェルの数に応じて変化します。たとえば、bash
と入力します 2回実行してから、もう一度コマンドを発行します:
$ bash
$ bash echo $SHLVL 3
シェルレベルが3の場合は、サブシェルが2つあることを意味するため、exit
と入力します。 通常のシェルに戻るには2回。
[Red Hat Enterprise Linuxを試してみませんか?今すぐ無料でダウンロードしてください。]
PATH
の操作 変数
PATH
変数には、コマンドとスクリプトを実行するための検索パスが含まれています。 PATH
を表示するには 、次のように入力します:
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
PATH
を一時的に変更します 次のコマンドを入力して/opt/bin
を追加します :
$ PATH=$PATH:/opt/bin
$ echo $PATH /home/khess/.local/bin:/home/khess/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/bin
変更は現在のセッションの一時的なものです。 .bashrc
に入力されていないため、永続的ではありません ファイル。変更を永続的にするには、コマンドPATH=$PATH:/opt/bin
を入力します ホームディレクトリの.bashrc
に ファイル。
これを行うと、新しいPATH
が作成されます。 現在のPATH
にディレクトリを追加することで変数 変数、$PATH
。コロン(:
)PATH
を区切ります エントリ。
$USER
の解明 、$PWD
、および$LOGNAME
私は自分の善良な自己によって払拭されたと思う理論を持っていました。私の理論では、コマンドはpwd
およびwhoami
おそらく、シェル変数$PWD
の内容を読み取ってエコーしただけです。 および$USER
または$LOGNAME
、 それぞれ。驚いたことに、ソースコードを見た後、彼らはそうではありません。たぶん私はそれらを書き直してそれを行う必要があります。作業ディレクトリを表示するために、複数のライブラリと約400行のCコードを追加する理由はありません。 $PWD
を読むだけです それを画面にエコーします(stdout)。 whoami
についても同じことが言えます $USER
のいずれかを使用 または$LOGNAME
。
ソースコードを自分で確認したい場合は、GitHubやその他の場所にあります。これらのプログラム(または他のプログラム)がシェル変数を使用していることがわかった場合は、それについて知りたいと思います。確かに、私はCソースコードを読むのがあまり得意ではないので、シェル変数を非常にうまく使用でき、私はそれを知りませんでした。彼らは私が読んだものからは見えず、理解できただけです。
$SHELL
の再生 ゲーム
この最後の環境変数の概要では、$SHELL
がどのように機能するかを示したいと思います。 変数が便利です。デフォルトのシェル(おそらくBash)にとどまる必要はありません。システムにインストールされている任意のシェルにアクセスして作業できます。システムにインストールされているシェルを確認するには、次のコマンドを使用します。
$ cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /usr/bin/bash
これらはすべて実際にはBashなので、興奮しないでください。運が良ければ、/bin/tcsh
のエントリも表示される可能性があります 、/bin/csh
、/bin/mksh
、/bin/ksh
、および/bin/rksh
。
あなたはこれらのシェルのどれでも使うことができます、そしてあなたがそんなに傾いているならば、それぞれで異なったことが起こっていることができます。しかし、あなたがSolaris管理者であり、Kornシェルを使用したいとします。デフォルトのシェルを/bin/ksh
に変更できます chsh
を使用する コマンド:
$ chsh Changing shell for khess. New shell [/bin/bash]: /bin/ksh Password: Shell changed.
ここで、echo $SHELL
と入力すると 、応答は/bin/bash
になります 、したがって、変更を確認するには、ログアウトしてから再度ログインする必要があります。ログアウトしてログインすると、echo $SHELL
に対して別の応答が返されます 。
他のシェルを入力してecho $SHELL
すべき 現在のシェルと$SHLVL
を報告します 、これにより、シェルの深さを常に把握できます。
独自の環境変数の設定
セッションごとにコマンドラインで独自の変数を設定することも、~/.bashrc
に配置して永続的にすることもできます。 ファイル、~/.profile
、またはデフォルトのシェルに使用するスタートアップファイル。コマンドラインで、PATH
を変更したときに行ったように、環境変数とその値を入力します。 変数。
まとめ
シェル変数または環境変数は、ユーザー、システム管理者、およびプログラマーに同様に役立ちます。これらは、コマンドラインおよびスクリプトで役立ちます。私は何年にもわたってさまざまな目的でそれらを使用してきました。それらのいくつかはおそらく少し型破りですが、機能し、今でも機能しています。独自に作成するか、システムおよびインストールされたアプリケーションから提供されたものを使用します。 Linuxユーザーエクスペリエンスを本当に豊かにすることができます。
変数とシェルに関する補足として、JSONでプログラミングする人はBourne Shellの使用のみを許可されるべきだと思う人はいますか?話し合います。