1. 程式人生 > >Linux中環境變數到底寫在哪個檔案中?解析login shell 和 no-login shell

Linux中環境變數到底寫在哪個檔案中?解析login shell 和 no-login shell

login shell:取得bash 時需要完整的登入流程,就稱為login shell。舉例來說,同tty1~tty6登入時, 需要輸入使用者名稱和密碼,此時取得的bash就稱為login shell

non-login shell:取得bash介面的方法不需要重複登入的動作。
舉兩個例子 (1)以X window登入linux後,再以X 的圖形化介面啟動終端機,此時那個終端機並不需要再次的輸入使用者名稱和密碼,那個bash的環境就稱為non-login shell
(2)在原本的bash環境中再次下達bash這個指令,同樣沒有要求輸入使用者名稱和密碼,那個第二個bash也是non-login shell login shell 和 no-login shell 的執行順序: Login shells:
/etc/profile
    /etc/profile.d
~/.bash_profile
    ~/.bashrc

          /etc/bashrc

Non-login shells:
~/.bashrc
    /etc/bashrc
          /etc/profile.d

注意:
/etc/profile:整個系統的環境 放在~裡的是個人設定,一般放在~/.bashrc 如果想執行當前目錄的指令碼,有2種方法: 可以執行./script.sh  (需要有可執行許可權)
(1)使bash新生成一個子bash來執行,例如:./script.sh (需要有可執行許可權)。在此情況下, 指令碼對環境變數的更改只對子bash有效. (2) 可使用source命令來直接執行指令碼(可用'.'來代替source). 它與上面的方法有兩點區別:
     1, 指令碼檔案不需要執行許可權.
     2, 就在當前bash中執行, bash不會新fork一個子bash來執行它, 所以指令碼對環境變數的更改會影響到當前bash. 所以當希望使修改的環境變數生效,用source即可。

相關推薦

Linux環境變數到底在哪個檔案解析login shell no-login shell

login shell:取得bash 時需要完整的登入流程,就稱為login shell。舉例來說,同tty1~tty6登入時, 需要輸入使用者名稱和密碼,此時取得的bash就稱為login shell non-login shell:取得bash介面的方法不需要重複登入的動作。 舉兩個例子 (1)以X

ubuntu環境變數檔案/etc/profile、.profile、.bashrc、/etc/bash.bashrc之間的區別聯絡(轉)

寫在前面:不同的發行版裡面檔案的命名可能有所不同,如有的發行版etc目錄下有bashrc,有的發行版下面是bash.bashrc。這個根據每個人不同的發行版注意下具體的檔名稱。 /etc/profile:此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行.並從/etc/pro

CentOS環境變數配置檔案

什麼是環境變數 bash shell用一個叫做 環境變數(environment variable) 的特性來儲存有關shell會話和工作環境的資訊。即允許在記憶體中儲存資料,使得在程式或shell中執行的指令碼能夠訪問它們。 在bash shell中,環境變數分為兩類: 全域性變數 區域性變數 全域性環

linux環境變數的設定

環境變數配置檔案 環境配置檔案有以下幾個: 1.etc/profile : 在登入時,作業系統定製使用者環境時使用的第一個檔案 ,此檔案為系統的每個使用者設定環境資訊,當用戶第一次登入時,該檔案被執行。 2./etc /environment : 在登入時作

Linux編譯安裝軟體過程環境變數的設定

1.編譯過程中執行“./configure”時,最好使用--prefix選項手動設定軟體的安裝目錄,如“$./configure --prefix=/home/lemon/mpich2-install”,這樣可以保證軟體安裝後能夠找到需要使用的可執行檔案及庫檔案的位置。 2.當需要指定某些依賴項時,使用--

虛擬機器裝linux linux伺服器環境變數修改

使用vmware時,在虛擬機器設定裡,設定CD/DVD為系統映象,掛載時,有時會有找不到介質或者no medium found之類的提示。 根本原因是iso映象並沒有載入到虛擬機器系統內。 解決辦法: 首先確定,VMWARE的CD/DVD設定內,已經成功選中ISO映象。如下

Linux bash環境配置以及配置檔案的讀取順序

在Linux中系統有一些環境配置檔案,讓bash在啟動是直接讀取這些配置檔案,以規劃好bash的操作環境。配置檔案可分為全體的配置檔案以及使用者個人偏好配置檔案。像 login 與 non-login shell 的概念 以及 各種配置檔案的讀取順序,我經常忘記

【Mac】-NO.161.Mac.1 -【MacOS 環境變數設定 zsh: command not found: xxx】

Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of Mastery:5 Practical Level:5 Desired Goal:5 Arc

【轉載】linux查詢目錄下的所有檔案是否含有某個字串

連結自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,並略加修訂。 https://www.cnblogs.com/snake553/p/5804181.html  這個顯示的更美觀 查詢目錄下的所有檔案中是否含

linux 常用命令 zcat 檢視壓縮檔案內容

zcat的用處是可以在不用解壓壓縮檔案就可以檢視檔案內的內容 有時候log檔案眾多,為了減少儲存空間就會將log檔案壓縮,這是zcat就可以檢視壓縮檔案內容。 -S:指定gzip格式的壓縮包的字尾。當字尾不是標準壓縮包(zip)字尾時使用此選項; -c:將檔案內容寫到標註輸出; -d:執行解壓縮操作; -

在64位的ubuntu 14.04 上開展32位Qt 程式開發環境配置(pro檔案增加 QMAKE_CXXFLAGS += -m32 命令)

為了能中一個系統上開發64或32位C++程式,費了些周折,現在終於能夠開始幹過了。在此記錄此時針對Q5.4版本的32位開發環境配置過程。 1. 下載Qt 5.4 的32位版本,進行安裝,安裝過程中會發現一些32位的庫沒有安裝,根據提示的錯誤逐個安裝上即可。 2. 開啟一個SampleCode 中的cube

Linux命令查找出日誌檔案訪問量最大的10個ip

寫這篇部落格的主要原因就是之前面試的兩家公司都有問到這個問題,所以便著手研究了一下它的解決方法 問題描述:一個日誌檔案裡逐行儲存著 時間 ip 這種形式的日誌,現在需要讓你使用linux命令查找出日誌檔案中訪問量最大的10個ip 怎麼處理? 1.首先建立模擬資料 這裡博主用python寫

關於一個檔案的全域性變數在其他檔案的使用

錯誤:多重定義 和 xxx變數已經在xxx.obj中定義 當在一個.cpp檔案中定義了一個全域性變數之後,需要在其他檔案中使用時,需要用到關鍵字extern 當使用extern修飾一個變數時,例如extern int x;   代表當前變數x 的定義來自於其他檔案,當

Hadoop程式執行 “沒有許可權讀檔案

問題:在hdfs與本地檔案系統進行檔案讀寫的時候顯示許可權不夠 解決: 1、hdfs中的檔案許可權不夠        檢視hdfs檔案許可權,通過 hadoop fs -chmod 777 XXXX 進行許可權的修改 2、本地(Linux)檔案許可權不夠      

java的隨機讀檔案RandomAccessFile

java中的隨機讀寫檔案: RandomAccessFile raf = new RandomAccessFile(“test.dat”,“rw”); 1.raf.write();這個方法是寫入檔案一個位元組    raf.read();這個方法是讀取檔案一個位

c++使用fstream讀檔案

c++中封裝的類庫ofsream,ifstream用於檔案的讀寫操作; (1)ofstream–用於從流中寫入檔案; //建立並寫入檔案,以寫檔案方式開啟檔案 ofstream TempOut("Test_327.txt"); int niNum = 100

HDFS讀檔案涉及到的幾個思想

HDFS讀寫檔案中涉及到的幾個思想 1.網路拓撲--節點距離計算 2.機架感知(副本節點選擇) 1.網路拓撲–節點距離計算 1.節點距離:兩個節點到達最近的共同祖先的距離總和。 2.圖解: 2.機架感知(副本節點選擇) 1.官方說明

Mac環境變數恢復

export 設定環境變數,忘記加上 :$PATH,執行source命令導致所有環境消失,此時再想vim編輯配置檔案 ~/.zshrc報錯 zsh: command not found: vim, 解決辦法: export PATH=/usr/local/sbin:/usr/loc

[轉載] linux查詢目錄下的所有檔案是否含有某個字串

查詢目錄下的所有檔案中是否含有某個字串 find .|xargs grep -ri "IBM" 查詢目錄下的所有檔案中是否含有某個字串,並且只打印出檔名 find .|xargs grep -ri "IBM" -l 1.正則表示式   (1)含義       一般

在SOLR環境變數的配置 過程,遇到的 A pseudo attribute name is expected 異常

此類問題,不僅僅限於SOLR,還有很多基於XML配置程式,也會出現這種問題,原因十有八九就是 XML格式書寫錯誤 有問題的XML :     <?xml version="1.0" encoding="UTF-8"> <Context docBase=