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

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 サイトの他の関連記事を参照してください。

声明
この記事はITcoolで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
Linuxを学ぶのは難しいですか?Linuxを学ぶのは難しいですか?Apr 18, 2025 am 12:23 AM

Linuxの学習は難しくありません。 1.Linuxは、UNIXに基づいたオープンソースオペレーティングシステムであり、サーバー、組み込みシステム、およびパーソナルコンピューターで広く使用されています。 2。ファイルシステムと許可管理を理解することが重要です。ファイルシステムは階層的であり、許可には読み取り、書き込み、実行が含まれます。 3。APTやDNFなどのパッケージ管理システムは、ソフトウェア管理を便利にします。 4。プロセス管理は、PSおよびTOPコマンドを通じて実装されます。 5. MKDIR、CD、Touch、Nanoなどの基本的なコマンドから学習を開始し、シェルスクリプトやテキスト処理などの高度な使用法を試してください。 6.許可問題などの一般的なエラーは、SudoとChmodを通じて解決できます。 7.パフォーマンスの最適化の提案には、HTOPを使用してリソースを監視すること、不要なファイルのクリーニング、SYの使用が含まれます

Linux管理者の給与はいくらですか?Linux管理者の給与はいくらですか?Apr 17, 2025 am 12:24 AM

Linux管理者の平均年salは、米国で75,000〜95,000ドル、ヨーロッパでは40,000〜60,000ユーロです。給与を増やすには、次のことができます。1。クラウドコンピューティングやコンテナテクノロジーなどの新しいテクノロジーを継続的に学習します。 2。プロジェクトの経験を蓄積し、ポートフォリオを確立します。 3.プロフェッショナルネットワークを確立し、ネットワークを拡大します。

Linuxの主な目的は何ですか?Linuxの主な目的は何ですか?Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

インターネットはLinuxで実行されますか?インターネットはLinuxで実行されますか?Apr 14, 2025 am 12:03 AM

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

Linux操作とは何ですか?Linux操作とは何ですか?Apr 13, 2025 am 12:20 AM

Linuxオペレーティングシステムのコアは、コマンドラインインターフェイスで、コマンドラインを介してさまざまな操作を実行できます。 1.ファイルおよびディレクトリ操作は、ファイルとディレクトリを管理するために、LS、CD、MKDIR、RM、その他のコマンドを使用します。 2。ユーザーおよび許可管理は、useradd、passwd、chmod、その他のコマンドを介してシステムのセキュリティとリソースの割り当てを保証します。 3。プロセス管理は、PS、Kill、およびその他のコマンドを使用して、システムプロセスを監視および制御します。 4。ネットワーク操作には、Ping、Ifconfig、SSH、およびネットワーク接続を構成および管理するためのその他のコマンドが含まれます。 5.システムの監視とメンテナンスは、TOP、DF、DUなどのコマンドを使用して、システムの動作ステータスとリソースの使用を理解します。

Linuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますLinuxエイリアスを使用したカスタムコマンドショートカットで生産性を高めますApr 12, 2025 am 11:43 AM

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは実際に何に適していますか?Linuxは実際に何に適していますか?Apr 12, 2025 am 12:20 AM

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

Linuxで倫理的ハッキングを習得するための必須ツールとフレームワークLinuxで倫理的ハッキングを習得するための必須ツールとフレームワークApr 11, 2025 am 09:11 AM

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

See all articles

ホット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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

メモ帳++7.3.1

メモ帳++7.3.1

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