今天要來介紹昨天有提到的export這隻指令,在介紹這隻指令之前。我們先來了解昨天介紹的env 跟set 這兩隻指令的差別。那這兩隻指令的差異基本上就在於這一點,該變數是否會被子程序所繼續引用。
這邊先來介紹一下父程序跟子程序是甚麼東西。當你登陸linux並取得一個bash之後,你的bash就是一隻獨立的程式。這個程序的識別使用的是PID,也就是程序識別碼。接下來,使用者在這個bash底下所下達的任何指令都被稱為子程序,因為使用者下達的指令都是由使用者使用的bash所衍伸出來的。
那我們在原本的bash底下執行另外一個bash,那結果就是操作的介面環境會跑到第二個bash去,那原本的bash就會再暫停的情況。若要回到原本的bash環境,就只有結束第二個bash這個唯一方法。
那這個程序概念與變數有關的部分就是這點。
子程序僅會繼承父程序的環境變數,子程序不會繼承父程序的自訂變數。
所以說,原本bash的自訂變數在進入子程序之後就會消失不見,要離開子程序回到父程序之後,這個字定變數才會再出現。
也就是說,將自定變數變成環境變數之後,這個變數會繼續存在於子程序。
export這隻指令就是用再將自定變數改成環境變數的指令,也就是分享自己的變數設定給後來呼叫的檔案或其他程序。