Shell环境变量深入了解
目錄
?
Shell環(huán)境變量深入:加載流程測試
Shell登錄環(huán)境執(zhí)行腳本文件語法
Shell非登錄環(huán)境變量執(zhí)行腳本文件語法
?????? ? Shell環(huán)境變量深入:識別Shell環(huán)境類型
???????? Shell環(huán)境變量深入:詳細切換Shell環(huán)境
Shell環(huán)境變量深入:加載流程測試
目標
理解Shell環(huán)境變量的加載流程測試
能夠知道環(huán)境變量應該配置在哪里
切換Shell環(huán)境執(zhí)行腳本文件介紹
在執(zhí)行一個腳本文件時可以指定具體Shell環(huán)境進行執(zhí)行腳本文件, 這個就是切換Shell環(huán)境執(zhí)行腳本
Shell登錄環(huán)境執(zhí)行腳本文件語法
sh/bash -l/--login 腳本文件含義: 先加載Shell登錄環(huán)境流程初始化環(huán)境變量, 再執(zhí)行腳本文件
Shell非登錄環(huán)境變量執(zhí)行腳本文件語法
bash # 加載Shell非登錄環(huán)境 sh/bash 腳本文件 # 直接執(zhí)行腳本文件含義: 先執(zhí)行加載Shell非登錄環(huán)境流程初始化環(huán)境變量, 再執(zhí)行腳本文件
測試案例
需求
Shell登錄環(huán)境會運行/etc/profile
Shell非登錄環(huán)境會運行/.bashrc
在/etc/profile與/當前用戶/.bashrc文件分別設置環(huán)境變量數據,然后在shell腳本文件中輸出環(huán)境變量數據,最后切換不同環(huán)境執(zhí)行shell腳本文件觀察驗證上面的流程運行
分析
清理工作, 清理/etc/profile文件中VAR1環(huán)境變量進行刪除, 并且重載這個配置文件
編輯/etc/profile, 增加環(huán)境變量VAR1=VAR1
編輯/root/.bashrc, 增加環(huán)境變量VAR2=VAR2
創(chuàng)建demo1.sh文件, 讀取環(huán)境變量數據進行打印
# 輸出環(huán)境變量VAR1 # 輸出環(huán)境變量VAR2以Shell非登錄環(huán)境執(zhí)行demo1.sh腳本文件, 觀察只會輸出VAR2, 不會輸出VAR1
以Shell登錄環(huán)境執(zhí)行demo1.sh腳本文件, 觀察會輸出VAR2和VAR1
演示
編輯/etc/profile文件
gedit /etc/profile編輯添加如下內容,保存退出
在root目錄下,編輯.bashrc文件
gedit .bashrc編輯添加如下最后2行內容,保存退出
創(chuàng)建文件demo1.sh
touch demo1.sh編輯文件demo1.sh,添加如下內容
#!/bin/bash echo $VAR1 echo $VAR2直接執(zhí)行腳本文件
bash demo1.sh直接執(zhí)行腳本文件, 即沒有加載登錄Shell環(huán)境變量, 也沒有加載非登錄Shell環(huán)境變量
先加載非登錄Shell環(huán)境變量, 然后執(zhí)行腳本文件
bash bash demo1.sh?
Shell非登錄環(huán)境會加載文件 當前用戶/.bashrc 的環(huán)境變量數據
所以這里會輸出VAR2的環(huán)境變量數據
先加載登錄Shell環(huán)境變量, 然后執(zhí)行腳本文件
bash -l demo1.shShell登錄環(huán)境會加載文件 etc/profile和當前用戶/.bashrc 的環(huán)境變量數據
所以這里會輸出VAR1和VAR2的環(huán)境變量數據
小結
1、Shell環(huán)境變量初始化加載原理過程
| shell登錄環(huán)境初始化過程 | /etc/profile--》/etc/profile.d/*.sh--》~/.bash_profile--》~/.bashrc--》/etc/bashrc |
| shell非登錄環(huán)境初始化過程 | ~/.bashrc--》/etc/bashrc--》/etc/profile.d/*.sh |
2、那么以到底將環(huán)境變量定義到哪里呢?/etc/profile與/etc/bashrc的區(qū)別?
需要登錄的執(zhí)行的shell腳本讀取的環(huán)境變量配置在:/etc/profile、/當前用戶/.bash_profile
不需要登錄的用戶執(zhí)行的shell腳本讀取的環(huán)境變量配置在:/當前用戶/.bashrc、/etc/bashrc
Shell環(huán)境變量深入:識別Shell環(huán)境類型
目標
理解如何識別shell登錄環(huán)境與非登錄環(huán)境
語法
使用$0識別環(huán)境語法
echo $0輸出 -bash 代表:shell登錄環(huán)境
輸出 bash 代表: shell非登錄環(huán)境
注意:這個 $0 環(huán)境變量如果用在子shell中(shell腳本文件)輸出Shell腳本本身的文件名
bash命令語法
bashbash命令:用于切換為Shell非登錄環(huán)境
分析
1、直接登錄系統(tǒng)為shell登錄環(huán)境輸出 $0 觀察輸出信息效果
2、使用 bash 命令切換為shell非登錄環(huán)境輸出 $0 觀察輸出信息效果
3、創(chuàng)建test.sh腳本文件,編輯添加輸出 $0 ,編程保存完成后執(zhí)行test.sh腳本文件觀察輸出信息效果
小結
1、如何識別shell登錄環(huán)境與非登錄環(huán)境?
$0 用于獲取當前Shell環(huán)境的類型, bash代表Shell非登錄環(huán)境, -bash 代表Shell登錄環(huán)境 # $0不可以在腳本文件中使用, 因為代表獲取腳本文件名字Shell環(huán)境變量深入:詳細切換Shell環(huán)境
目標
理解切換shell環(huán)境的命令
切換shell環(huán)境命令介紹
直接登錄加載shell登錄環(huán)境
su切換用戶加載Shell登錄與Shell非登錄環(huán)境
bash加載Shell登錄與Shell非登錄環(huán)境
切換環(huán)境方式:bash切換
命令
語法1:
bash # 加載【Shell非登錄環(huán)境】語法2:
bash -l Shell腳本文件 / bash --login shell腳本文件 sh -l shell腳本文件 / sh --login shell腳本文件 # 先加載【Shell登錄環(huán)境】然后運行指定Shell腳本文件分析
使用bash執(zhí)行test.sh腳本文件,發(fā)生錯誤說明當前環(huán)境為Shell非登錄環(huán)境
總結
以上是生活随笔為你收集整理的Shell环境变量深入了解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 直流无刷电机和霍尔传感器
- 下一篇: 多态是什么 父类如何调用子类的方法(美团