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 の環境変数を提供するのでしょうか? (ログインシェルと非ログインシェルについては前に説明します)
ログインシェルの場合:
/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
rit@rit-X405UA:~$ su - ボブ パスワード: bob@rit-X405UA:~$ echo $foo bob@rit-X405UA:~$
次に、非ログインシェルを使用して別のアカウント bob にログインし、foo 変数を表示します。
rit@rit-X405UA:~$ スー ボブ パスワード: bob@rit-X405UA:/home/rit$ echo $foo FOO
非ログインシェルは前のプロセスのユーザー定義変数を継承しますが、ログインシェルは継承しないことを説明します。
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" ...
非ログインシェル:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
ログインシェル:
/home/rit/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr /local/games:/snap/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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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

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

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

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

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

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

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