本文鏈接 https://blog.csdn.net/Ming2017123123/article/details/99287183
Linux 環境變量
- environment variables
- 用於存儲有關shell會話和系統環境的信息
分類
全局變量
- 對shell會話可見
- 對所有shell創建的子進程可見,(對那些子進程中需要獲取父進程信息的程序來說非常有用)
- 系統環境變量一律使用大寫來區分與普通用戶的環境變量
查看環境變量
printenv | wc -l
- 新啓動shell 後,這些環境依然是可見的
局部變量
- 只對創建他們的 shell 可見, 即只能在定義他們的進程中使用
- set 命令 顯示爲某個特定進程設置的所有環境變量,包括全局變量
set | wc -l
設置環境變量
設置局部環境變量
- 在環境變量名稱,等號和值之間沒有空格
- 變量賦值給一個包含空格的字符串時,要有引號
- 默認子shell 中不可用
test='two string'
echo $test
zsh
echo $test
exit
echo $test
設置全局環境變量
- export 導出到全局環境
- 導出環境變量時不需要用$ 符號
test='two string'
export test
echo $test
zsh
echo $test
exit
echo $test
刪除環境變量
- unset 刪除環境變量
- 刪除環境變量時不需要用$ 符號
test='two string'
echo $test
export test
zsh
echo $test
unset test
echo $test
exit
echo $test
unset test
echo $test
默認環境變量
- 默認情況下bash shell 會用一些特定的環境變量來定義系統環境
PATH 環境變量
- 定義了命令行輸入命令的搜索路徑
- 目錄之間用冒號分割
-
添加單點符
echo $PATH PATH=$PATH:. echo $PATH
系統環境變量
- Linux System用環境變量在程序和腳本中標識自己
- 啓動一個 shell 時,默認在幾個啓動文件中查找命令
- bash 檢查的啓動文件取決與啓動 shell的方式
登陸 shell
處理文件的次序
- /etc/profile 系統上每個用戶登陸時都會啓動這個文件
- $HOME/.bashprofile
- $HOME/.bashlogin
- $HOME/.profile
$HOME 下的啓動文件是提供一個用戶專屬的啓動文件來定義用戶專有的環境變量,一般 Linux 發行版只用這三個中的一個
head $HOME/.bash_profile
非登陸的交互式 shell
- 在用戶目錄下檢查 .bashrc 是否存在
- 作用:
- 查看 /etc 目錄下的共用 bashrc 文件,
- 爲用戶提供一個自己的命令別名
- 作用:
- 交互式 shell 的啓動文件只會在有新的交互式 shell 啓動時才運行,因此任何的子 shell 都會自動執行這個交互式 shell 的啓動文件
- /etc/bashrc 也會執行位於 /etc/profile.d 下的應用專屬的啓動文件
作爲腳本運行的非交互式 shell
系統執行 shell 腳本時所用的 shell
- BASHENV 環境變量
可變數組
- 環境變量可以作爲數組使用
- 數組的索引從0開始( 注 在這個環境下索引從1開始, 環境 /bin/zsh )
- unset 可刪除數組,也可刪除指定索引
my_env_var=(one two three four five six)
echo $my_env_var
echo $my_env_var[2]
echo $my_env_var[0]
echo ${my_env_var[3]}
echo $my_env_var[*]
my_env_var[4]=ten
echo ${my_env_var[*]}
my_env_var=(1 2 3 4 5)
echo ${my_env_var[*]}
# unset my_env_var[2]
echo $my_env_var[*]
echo ${my_env_var[2]}
echo ${my_env_var[3]}
unset my_env_var
echo $my_env_var[*]
echo $SHELL
# /bin/zsh
命令別名 alias
- 命令別名允許爲通用命令和參數一起創建一個別名
- 這樣能通過最少的鍵來使用命令了
alias
- 相當於局部變量,通常只在定義他們的shell進程中有效
alias ll='ls -la --color=auto'
# ll
alias | grep ll
sh
# ll
alias | grep ll
exit