ホームページ システムチュートリアル Linux Linux 環境変数はどのファイルから取得されますか?

Linux 環境変数はどのファイルから取得されますか?

Mar 20, 2024 pm 07:50 PM
linux 環境変数 レッドハットリナックス

Linux環境

LinuxShell ログインが成功すると、Linux はログイン用のファイルから一連のデータを取得し、このデータは個々の命令または個々のプログラムで使用されます。そのデータは LinuxShell ランタイム環境と呼ばれます。環境内のデータは、環境変数、シェル変数、エイリアス、シェル関数の 4 種類に大別できます。このうち、シェル変数、エイリアス、シェル関数については、ここでは詳しく説明しません。

環境変数とは何ですか?

パラメータを指定せずに printenv コマンドを直接使用して、現在のセッションの環境変数と環境変数の値を出力できます。パラメータを追加すると、特定の変数の値が出力されます。表示する方が便利な場合は、printenv の出力を less に渡して環境変数を表示できます (1):

printenv | 少ない
ログイン後にコピー

以下は、私の Linux システムでの出力の一部です:

...
...
MANDATORY_PATH=/usr/share/gconf/cinnamon.mandatory.path
XDG_SESSION_ID=c2
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/rit
ユーザー=リット
DESKTOP_SESSION=シナモン
QT4_IM_MODULE=fcitx
GNOME_TERMINAL_SCREEN=/org/gnome/ターミナル/screen/e9e1def3_9380_43b6_8ce3_7916861e45d2
DEFAULTS_PATH=/usr/share/gconf/cinnamon.default.path
QT_QPA_PLATFORMTHEME=qt5ct
PWD=/ホーム/rit
HOME=/ホーム/リット
...
...
ログイン後にコピー

ご覧のとおり、普段接触している PWD、HOME、USER などがすべてその中に含まれています。

コマンドのパラメータに変数の値を使用したい場合は、「$ 変数名」(2) と入力します。のような: ###

ls $HOME/bin

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ユーザー定義変数

システムに付属する変数だけでなく、ユーザーは変数をカスタマイズすることもできます:

rit@rit-X405UA:~$ foo=FOO rit@rit-X405UA:~$ hello='Hello World' rit@rit-X405UA:~$ echo $foo FOO rit@rit-X405UA:~$ echo $hello こんにちは世界###

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
シェルコマンドではスペースは区切り文字とみなされ、意味のない記号ではないため、等号の左側と右側にはスペースがないことに注意してください。

スペース、$ などの特殊文字が表示される場合は、コロン (3) で展開する必要があることに注意してください。

シェル内で実行されているプログラムが変数にアクセスできるようにするには、export コマンドを使用する必要があります。

rit@rit-X405UA:~$ エクスポート foo hello 
ログイン後にコピー

このように現在のセッションで定義された変数は、現在のセッションでのみ有効です。つまり、ログアウトして再度ログインすると、変数は存在しません。シェルにログインするたびにこの変数を使用するには、環境変数構成ファイルで変数を定義する必要があります。

環境変数はどのファイルから取得されますか?

記事の冒頭で述べたように、Linux はファイルから環境変数を取得します。では、どのファイルが LinuxShell の環境変数を提供するのでしょうか? (ログインシェルと非ログインシェルについては前に説明します)

linux修改环境变量的值_linux修改用户环境变量_修改环境变量linux

ログインシェルの場合:

/etc/profile, このファイルは、loginshell のグローバル環境変数設定ファイルです。グローバルとは、すべてのユーザーに対して有効であることを意味します。~/.bash_profile、~/.bash_login、~/.profile、これら 3 つのファイルが使用されます個人環境変数なので、各ユーザーの HOME ディレクトリにはこれら 3 つのファイルのうち少なくとも 1 つが含まれます (Linux ディストリビューションのバージョンによって異なります) linux はユーザー環境変数を変更します、読み取り時にのみ読み取りますいずれかのファイルを取得します。 loginshell がログインすると、Linux はまずグローバル設定ファイル Linux メモリ管理 /etc/profile を読み取り、次に HOME ディレクトリ内でこれら 3 つのファイルを特定の順序で検索し、最後に最初に見つかったファイルを読み取ります。 /etc/profile で定義された変数と競合がある場合、その変数は上書きされます。

非ログインシェルの場合:

/etc/bash.bashrc、このファイルは非ログインシェルのグローバル環境変数設定ファイルです。 (インターネット上の一部のブログの紹介では、このファイルは /etc/bash.bashrc ではなく、/etc/bashrc になっています。実際には、これはディストリビューションのバージョンによって異なります) ~/.bashrc、このファイルはユーザーの個人的な非ログインシェル環境変数設定ファイル。ログインシェルと同様、このファイルは /etc/bash.bashrc の後に実行されます。競合がある場合、このファイルは競合する変数も再描画します。

ファイルの読み取り順序に関する上記の説明は、この記事を参照しています。

さまざまな Linux ディストリビューションには su コマンドがあります。直接「su username」と入力すると、非ログインシェルとしてユーザーにログインします。オプション「-」または「-l」または「 --login」を追加すると、 "の場合、ユーザーはloginshellとしてログインします。読者がそのようなファイルの読み取りプロセスをより明確に理解している場合は、このコマンドを使用してそれらのファイルを変更してテストできます。

ログインシェルと非ログインシェル

LinuxShell にログインするには、ログインシェルと非ログインシェルの 2 つの方法があります。ログイン シェルは通常、最初のログイン シェル (たとえば、コンピュータの電源を入れたとき) として使用され、非ログイン シェルは通常、コンピュータの電源を入れた後に GUI から直接起動されるシェルです。これら 2 つの方法でログインするために使用される環境変数にはいくつかの違いがあります。

1.非ログインシェルは、前のプロセス (通常はログインシェル) からいくつかの環境変数を継承します。

簡単なテストで確認できます。

まず、現在のシェルで変数 foo=FOO をカスタマイズし、エクスポートします (子プロセスでもこの変数を使用できるようにするため、シェル自体はプログラムです)。

rit@rit-X405UA:~$ foo=FOO rit@rit-X405UA:~$ エクスポート foo

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

次に、loginshell を使用して別のアカウント bob にログインし、foo 変数を表示してみます。

rit@rit-X405UA:~$ su - ボブ パスワード: bob@rit-X405UA:~$ echo $foo bob@rit-X405UA:~$

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

結果として、foo 変数は空になります。これは、foo が定義されていないことを意味します。

次に、非ログインシェルを使用して別のアカウント bob にログインし、foo 変数を表示します。

rit@rit-X405UA:~$ スー ボブ パスワード: bob@rit-X405UA:/home/rit$ echo $foo FOO

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
結果として、foo 変数はユーザー rit のシェル内の定義と一致します。

linux修改用户环境变量_修改环境变量linux_linux修改环境变量的值非ログインシェルは前のプロセスのユーザー定義変数を継承しますが、ログインシェルは継承しないことを説明します。

2.PWD、ホーム、ユーザー、パス

1 の例でわかるように、ログインシェルの PWD は現在のユーザーの HOME ディレクトリ (~) に変更されますが、非ログインシェルは親プロセスの作業ディレクトリを継承します。

echo を使用して HOME と USER を表示すると、両方のログイン フォームでログインした後、これら 2 つの変数が現在のユーザーに対応するホーム ディレクトリとユーザー名に切り替わることがわかります。

PATH の 2 つのログイン形式の違いについては、~/.bash_profile (または ~/.bash_login、~/.profile) でいくつかの手掛かりを見つけることができます。上で述べたように、これら 3 つのファイルはloginshell で読み取られますが、~/.bashrc と注意深く比較すると、~/.bash_profie にさらに 2 行あることがわかります。

... PATH="$HOME/bin:$PATH" ... PATH="$HOME/.local/bin:$PATH" ...

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

したがって、2 つの方法を使用してログインした後、echo を使用して PATH 変数を表示すると、次のように違いがわかります。

非ログインシェル:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

linux修改环境变量的值_linux修改用户环境变量_修改环境变量linuxログインシェル:

/home/rit/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr /local/games:/snap/bin

ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
$HOME/bin は、ホーム ディレクトリにこのフォルダーがないため、上記には含まれていません。

注意深く見ると、他にも違いがあることがわかりますが、これらの違いの原因を見つけるのは簡単ではありません。

コメント

(1) Linux シェルにはパイプラインと呼ばれる機能があり、あるコマンドの出力を次のコマンドの入力にリダイレクトできます (つまり、特定のコマンドの入力が別のコマンドの入力と見なされます)。 ) ですが、前提条件として、命令が入力またはフォーム出力を受け入れることが必要です。一般的な命令には、cat、less、grep などが含まれます。入力と出力は「|」でつなぎます。

(2) linuxshell が $ 記号を読み取ると、まずその直前の文字を変数名として扱い、$ と変数名を変数の値に置き換えます。次に、置き換えられたパラメータが変数に渡されます。指示。これは、シェルの特性拡張におけるパラメータ拡張に属し、パラメータ拡張だけでなく、パス名拡張、中括弧拡張、およびコマンド置換も含まれます。

(3) は (2) の逆で、特殊な記号を無視したい場合は、右側にダッシュを追加できます。二重コロンは、「」、「`」、および「$」を除くすべての特殊記号をブロックします。単一のコロンはすべての特殊文字を無視します。

###参照する###

環境変数ファイルを読み取る順序については、Web サイトのブログ

Linux ユーザー環境変数の変更

を参照するだけでなく、その他の内容も書籍 TheLinuxCommandLine2ndEdititonAComplete Introduction から参照しています。 正誤表の校正 2019 年 7 月 4 日: (1) 変数をカスタマイズする場合、等号の左側と右側にスペースを残すことはできません。変更前は、等号の右側にスペースを入れてはいけないとだけ述べました。 (2) パラメータ展開により、「$変数名」が変数の値に置き換えられます。変更前の記述は「$変数名」を変数名に変換するものでした。 (3) エスケープ文字は展開特性に属しません。変更前は拡張に分類していました。新しいコンテンツ 2019 年 7 月 4 日: 「ユーザー定義変数」セクションの最後にカスタム変数のスコープの説明を追加しました。

以上がLinux 環境変数はどのファイルから取得されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Linuxアーキテクチャ:5つの基本コンポーネントを発表します Linuxアーキテクチャ:5つの基本コンポーネントを発表します Apr 20, 2025 am 12:04 AM

Linuxシステムの5つの基本コンポーネントは次のとおりです。1。Kernel、2。Systemライブラリ、3。Systemユーティリティ、4。グラフィカルユーザーインターフェイス、5。アプリケーション。カーネルはハードウェアリソースを管理し、システムライブラリは事前コンパイルされた機能を提供し、システムユーティリティはシステム管理に使用され、GUIは視覚的な相互作用を提供し、アプリケーションはこれらのコンポーネントを使用して機能を実装します。

VSCODEに必要なコンピューター構成 VSCODEに必要なコンピューター構成 Apr 15, 2025 pm 09:48 PM

VSコードシステムの要件:オペレーティングシステム:オペレーティングシステム:Windows 10以降、MACOS 10.12以上、Linux Distributionプロセッサ:最小1.6 GHz、推奨2.0 GHz以上のメモリ:最小512 MB、推奨4 GB以上のストレージスペース:最低250 MB以上:その他の要件を推奨:安定ネットワーク接続、XORG/WAYLAND(Linux)

Apr 16, 2025 pm 07:39 PM

NotePadはJavaコードを直接実行することはできませんが、他のツールを使用することで実現できます。コマンドラインコンパイラ(Javac)を使用してByteCodeファイル(filename.class)を生成します。 Javaインタープリター(Java)を使用して、バイトコードを解釈し、コードを実行し、結果を出力します。

VSCODEは拡張子をインストールできません VSCODEは拡張子をインストールできません Apr 15, 2025 pm 07:18 PM

VSコード拡張機能のインストールの理由は、ネットワークの不安定性、許可不足、システム互換性の問題、VSコードバージョンが古すぎる、ウイルス対策ソフトウェアまたはファイアウォール干渉です。ネットワーク接続、許可、ログファイル、およびコードの更新、セキュリティソフトウェアの無効化、およびコードまたはコンピューターの再起動を確認することにより、問題を徐々にトラブルシューティングと解決できます。

GITの倉庫アドレスを確認する方法 GITの倉庫アドレスを確認する方法 Apr 17, 2025 pm 01:54 PM

gitリポジトリアドレスを表示するには、次の手順を実行します。1。コマンドラインを開き、リポジトリディレクトリに移動します。 2。「git remote -v」コマンドを実行します。 3.出力と対応するアドレスでリポジトリ名を表示します。

vscode端子使用チュートリアル vscode端子使用チュートリアル Apr 15, 2025 pm 10:09 PM

VSCODEビルトインターミナルは、エディター内でコマンドとスクリプトを実行して開発プロセスを簡素化できるようにする開発ツールです。 VSCODE端子の使用方法:ショートカットキー(CTRL/CMD)で端子を開きます。コマンドを入力するか、スクリプトを実行します。 Hotkeys(Ctrl Lなどの端子をクリアするなど)を使用します。作業ディレクトリ(CDコマンドなど)を変更します。高度な機能には、デバッグモード、自動コードスニペット完了、およびインタラクティブコマンド履歴が含まれます。

vscodeでコードを書く場所 vscodeでコードを書く場所 Apr 15, 2025 pm 09:54 PM

Visual Studioコード(VSCODE)でコードを作成するのはシンプルで使いやすいです。 VSCODEをインストールし、プロジェクトの作成、言語の選択、ファイルの作成、コードの書き込み、保存して実行します。 VSCODEの利点には、クロスプラットフォーム、フリーおよびオープンソース、強力な機能、リッチエクステンション、軽量で高速が含まれます。

vscodeはMacに使用できますか vscodeはMacに使用できますか Apr 15, 2025 pm 07:36 PM

VSコードはMacで利用できます。強力な拡張機能、GIT統合、ターミナル、デバッガーがあり、豊富なセットアップオプションも提供しています。ただし、特に大規模なプロジェクトまたは非常に専門的な開発の場合、コードと機能的な制限がある場合があります。

See all articles