【linux】ローカル変数、環境変数、グローバル変数の解析


1. ローカル変数

  • ローカル変数: 現在のユーザー定義変数。現在のプロセスでは有効ですが、他のプロセスおよび現在のプロセスの子プロセスでは無効です。

2. 環境変数

1. 環境変数の分類

  • 環境変数(プログラムにバインドされており、プログラムが終了すると、動的に設定された環境変数も終了します): 現在のプロセスは有効であり、子プロセスから呼び出すことができます。それ以外の場合、子プロセスの環境変数の設定は無効です。親プロセスの場合。
    • 1. 環境変数の値は、Windows のユーザー環境変数と同じようにユーザーによって決定されます。ユーザー qpyue が su を使用して root ユーザーに切り替えた場合でも、echo USER は以前のユーザー名 (qpyue) のままです。環境変数の値は変更されません。(HOMEを除く)

    • 2. 2 人の qpyue ユーザーが同時にログインした場合でも、環境変数は構成ファイルから更新されて別々に保存されるため、環境変数の値は相互に影響しません(2 つの bash プログラムが存在する間) 、どちらかの環境の変化はもう一方には影響しません)

1) 有効範囲による分類

システム環境変数: public、すべてのユーザーに有効。
ユーザー環境変数: ユーザーのプライベート設定およびカスタマイズされた個人設定。このユーザーにのみ有効です。

2) ライフサイクルによる分類

永続的な環境変数: 環境変数スクリプト ファイルで設定され、これらのスクリプトはユーザーがログインするたびに自動的に実行されます。これは永続的な効果と同等です。
一時環境変数: 使用時にシェル内で一時的に定義され、シェルを終了すると無効になります。

2. 環境変数関連コマンド

  • env: 現在のユーザーの環境変数を表示します。
  • env|grep 環境変数名: フィルターに含まれる環境変数
  • import : 現在のシステムによって定義されているすべての環境変数を表示します
  • エクスポート変数名 = 変数値、または変数名 = 変数値; エクスポート変数名
  • printenv 環境変数名: 指定された環境変数の値を表示します。
  • echo $環境変数名: 指定された環境変数の値を表示します
  • unset 環境変数名: 指定された環境変数の値を表示します
  • set は、現在のユーザーのすべての変数 (一時変数と環境変数) をクエリします。

3. 共通の環境変数

機能と役割: Linux システム コマンドやユーザー アプリケーションを含む実行可能プログラムの検索ディレクトリ。実行プログラムのディレクトリがPATHで指定したディレクトリにない場合は、実行時にディレクトリを指定する必要があります。

記述形式: PATH 環境変数にはディレクトリのリストが格納され、ディレクトリはコロン: で区切られ、最後のドットは現在のディレクトリを示します。エクスポート PATH= ディレクトリ 1: ディレクトリ 2: ディレクトリ 3:... ディレクトリ n:。

フォーマットを追加

1、临时添加,PATH 在终端关闭后就会消失。
export PATH=$PATH:$HOME/bin 或 export PATH=$HOME/bin:$PATH
2、永久添加环境变量(影响当前用户)
vim ~/.bashrc

文書の最後に次の内容を追加します。

export PATH="/apps/summary_fz_province/cdc_model/bin/black_table:$PATH"

保存して終了し、実行します。

source /etc/profile
3、永久添加环境变量(影响所有用户)
vim /etc/profile

文書の最後に次の内容を追加します。

export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"

保存して終了し、実行します。

source /etc/profile

他の環境変数

  • HOME: ユーザーのメイン作業ディレクトリ (つまり、ユーザーが Linux システムにログインするときのデフォルトのディレクトリ) を指定します。
  • PWD: 現在のディレクトリを表示します。
  • SHELL: 現在のユーザーが使用しているシェル。
  • HISTSIZE: 履歴コマンド レコードの数を保存します。
  • HOSTNAME: ホストの名前アプリケーションでホスト名を使用する必要がある場合、通常はこの環境変数から取得されます。
  • LOGNAME: 現在のユーザーのログイン名。
  • LANG/LANGUGE: 言語関連の環境変数。複数の言語を使用するユーザーはこの環境変数を変更できます。

3. グローバル変数

  • グローバル変数: すべてのユーザーとプログラムをグローバルに呼び出し (ファイル構成)、継承することができ、デフォルトで新しいユーザーを呼び出すこともできます。
  • 関連する設定ファイル
ファイル名 説明する 述べる
/etc/プロファイル グローバル環境変数情報 システムとすべてのユーザーが有効になります
/etc/bashrc グローバル bash 情報、すべてのユーザーに有効
$HOME/.bashrc 現在のユーザーの bash 情報。ユーザーのログイン時に読み取られます。 エイリアス、umask、関数などを定義します。
$HOME/.bash_profile 現在のユーザーの環境情報。ユーザーのログイン時に読み取られます。
$HOME/.bash_logout 現在のユーザーが現在のシェルを終了したときに最後に読み取られる ユーザーのログアウト時などに実行するプログラムを定義します。
$HOME/.bash_history 現在のユーザーが現在のシェルを終了したときに最後に読み取られる 履歴 -w 履歴を保存 履歴 -c 履歴をクリア

3.1 /etc/profile ファイル

このファイルはシステムのユーザーごとの環境情報を設定し、ユーザーの初回ログイン時に実行されます。そして、/etc/profile.d ディレクトリー内の構成ファイルからシェルの設定を収集します。/etc/profile を変更した場合は、ソース /etc/profile を手動で実行する必要があります。変更は有効になります。この変更はすべてのユーザーに有効になります。

  • etc/bash.bashrc が存在する場合はそれを実行します。
  • /etc/profile.d ディレクトリが存在する場合は、このディレクトリ内の .sh で終わるすべてのスクリプト ファイルを実行します。
  • PATH パスの追加は、/etc/profile ファイルのエクスポート コマンドを使用して追加できます。

3.2 /etc/profile.d ファイル

/etc/profile は、起動のたびに /etc/profile.d の下にあるすべてのスクリプト ファイルを実行します。

[wqf@b1i10 ~]$ ls /etc/profile.d 
256term.csh  abrt-console-notification.sh  colorgrep.csh  colorls.csh  csh.local   lang.csh  less.csh  PackageKit.sh  vim.csh  vte.sh      which2.sh
256term.sh   bash_completion.sh            colorgrep.sh   colorls.sh   flatpak.sh  lang.sh   less.sh   sh.local       vim.sh   which2.csh

3.2 /etc/bashrc ファイル

ターミナルを実行しているすべてのユーザーに対してこのファイルを実行します。このファイルは、ターミナルが開かれたときに読み取られます。ターミナルを使用するすべてのユーザーに対して特定の構成を変更し、今後開かれるターミナルで有効にする場合は、このファイルを変更できます。このファイルを変更するために再起動する必要はありません。ターミナルを再度開くだけで変更できます。効果。

3.3 ~/.bash_profile ファイル

各ユーザーは、このファイルを使用して自分専用のシェル情報を入力できます。ユーザーのログイン時に、このファイルは 1 回だけ実行されます。デフォルトでは、いくつかの環境変数を設定し、ユーザーの ~/.bashrc ファイルを実行します。このファイルは /etc/profile に似ており、ソース ~/.profile を手動で実行する必要があります。変更が有効になります。/etc/profile はすべてのユーザーに対して有効になり、~/.profile は現在のユーザーに対してのみ有効になります。ユーザー。

~/.bash_profile または ~/.bash_login または ~/.profile ファイルは 1 つだけあり、実行順序は次のとおりです: ~/.bash_profile > ~/.bash_login > ~/.profile

[summary_fz_province@b1i10 ~]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

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

export PATH
---

3.4 ~/.bashrc ファイル

このファイルは、ユーザーがログインするとき、および新しいシェルが開かれるたびに読み取られます。(各ユーザーはユーザー ディレクトリに ~/.bashrc ファイルを持っています) このファイルは /etc/bashrc に似ており、再起動しなくても有効になります。有効にするために bash を再度開いてください。/etc/bashrc はすべてのユーザーにとって新しいものです。開かれたすべての bash が有効になりますが、~/.bashrc は現在のユーザーが新しく開いた bash に対してのみ有効になります。ユーザー固有の環境変数を設定することはお勧めできません。シェルが開かれるたびにファイルが 1 回読み取られ、効率が確実に影響を受けます。

3.5 Linuxログイン時のファイル実行処理

Linux にログインしたときにファイルを実行するプロセスは次のとおりです。

1. Linux に初めてログインするときは、まず /etc/profile ファイルを起動し、次にユーザー ディレクトリ内の ~/.bash_profile、~/.bash_login、または ~/.profile ファイルのいずれかを起動します。

2. 「~/.bash_login」ファイルと「~/.profile」ファイルが存在する場合は、ユーザーディレクトリで「~/.bash_profile」を起動します。実行順序は、~/.bash_profile、~/.bash_login、~/.profile です。~/.bash_profile ファイルが存在する場合、通常は ~/.bashrc ファイルが実行されます。

実行シーケンスは次のとおりです: /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

3.6 /etc/profile、/etc/bashrc、~/.bash_profile、~/.bashrc の違い

/etc/profile はグローバル関数であり、それに設定された変数はすべてのユーザーに作用し、~/.bash_profile に設定された変数は /etc/profile の変数を継承してユーザーに作用します。
~/.bash_profile は対話型ログイン モードの bash で実行され、~/.bashrc は対話型非ログイン モードの bash で実行されます。


参考記事:
https://www.cnblogs.com/gmq-sh/p/6971588.html
https://blog.csdn.net/weixin_48896613/article/details/127170565
https://blog.csdn.net/mayue_web /記事/詳細/97023615

おすすめ

転載: blog.csdn.net/sodaloveer/article/details/130380098