linux export的作用域
最近好友提問export作用域相關的問題~被問到了,寫篇文章記錄一下,
文章目錄
- linux export的作用域
- 前言
- 一、問題詳情
- 二、分析原因
- 1.百度定義
- 2.如何實作
- 3.linux的相關目錄介紹
- 總結
前言
Linux export 命令用于設定或顯示環境變數,
提示:以下是本篇文章正文內容,下面案例可供參考
一、問題詳情

現在是可以echo的
現在寫一個腳本測驗

wq 保存為 test.sh

直接運行腳本是ok的可以輸出~~~
現在我再直接echo $a

不行是空的
那么怎么可以讓他在外面也可以生效呢?
二、分析原因
1.百度定義
搜索到,在 shell 中執行程式時,shell 會提供一組環境變數,export 可新增,修改或洗掉環境變數,供后續執行的程式使用,export 的效力僅限于該次登陸操作,
我們執行腳本,其實是一個新的行程在執行,他設定的環境變數,并不能影響當前行程,也就是變數的作用域不一樣,
2.如何實作
知道問題了,我們就很好解決了,
當運行一個.sh檔案或者是shell命令,shell會把當前的環境變數都復制過來,也就是子類和父類的關系,通過以下幾個場景解釋這個概念,
證明父能影響子
直接運行命令export K=V,然后echo $K,能看到輸出了V
寫一個shell腳本,echo $K,能看到輸出了V
證明子不能影響父
在一個shell腳本中export K=V,然后echo $K,能看到輸出了V,
基于1,直接運行命令echo $K,發現輸出為空
我們可以
source test.sh
原理就是source 命令 可以重新加載.bash_profile 和 .profile目錄的命令,
我們使用source 是在本行程執行的,所以 $a的作用域是相符的,我們就可以echo出 $a,
3.linux的相關目錄介紹
系統級:
1、/etc/profile
在系統啟動后第一個用戶登錄時運行,并從/etc/profile.d目錄的組態檔中搜集shell的設定,使用該檔案配置的環境變數將應用于登錄到系統的每一個用戶,
2、/etc/bashrc(Ubuntu和Debian中是/etc/bash.bashrc)
在 bash shell 打開時運行,修改該檔案配置的環境變數將會影響所有用戶使用的bash shell,
3、/etc/environment
在系統啟動時運行,用于配置與系統運行相關但與用戶無關的環境變數,修改該檔案配置的環境變數將影響全域,
用戶級:
1、~/.profile(推薦首選)
當用戶登錄時執行,每個用戶都可以使用該檔案來配置專屬于自己使用的shell資訊,
2、~/.bashrc
當用戶登錄時以及每次打開新的shell時該檔案都將被讀取,不推薦在這里配置用戶專用的環境變數,因為每開一個shell,該檔案
都會被讀取一次,效率肯定受影響,
4、~/.bash_logout
當每次退出系統(退出bash shell)時執行該檔案,
總結
麻煩來個一鍵三連!!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/205172.html
標籤:python
