《Ubuntu — export和source命令》


1.export

  export是將一個變量導出,相當於局部變量導出成全局變量。

 

2.source

  通常用法:source filepath 或 . /filepath

  功能:使當前shell讀入路徑為filepath的shell文件並依次執行文件中的所有語句,通常用於重新執行剛修改的初始化文件,使之立即生效,而不必注銷並重新登錄。例如,當我們修改了/etc/profile文件,並想讓它立刻生效,而不用重新登錄,就可以使用source命令,如source /etc/profile。

  source命令(從 C Shell 而來)是bash shell的內置命令;點命令(.),就是個點符號(從Bourne Shell而來)是source的另一名稱。這從用法中也能看出來。

  需要注意:點命令只能執行腳本或者應用程序。但是如果一個文件里面有export變量需要導出就不能使用點命令了。要使用source。

  還有一種應用場景,當在一個腳本中想使用另一個腳本中的變量的時候,也只能使用source。

  

 

 

 

3.父shell和子shell的概念

  父shell與子shell,從shellA中啟動一個shell,稱之為shellB。 shellA為父shell,shellB為子shell。

  最常見的情況是在當前shell下執行腳本,這個腳本實際上是在子shell中執行的。

 

  

  可以看出當前的shell的PID是2514。

  執行一個測試腳本

  

 

 

   可以發現tesh.sh的父進程是bash。

 

4.export和souce的作用

  假如有一個腳本:

#test.sh
 
#!/bin/sh
export TEST_DIR=/home/test

  直接執行./test.sh

ubuntu@test-ubuntu:~$ ./test.sh
ubuntu@test-ubuntu:~$ echo $TEST_DIR   
 
ubuntu@test-ubuntu:~$

  發現沒有值,因為子shell中並不會影響到父shell。

  但是假如變成這樣

ubuntu@test-ubuntu:~$ source ./test.sh
ubuntu@test-ubuntu:~$ echo $TEST_DIR   
/home/test

  發現可以輸出了.source(或點)命令通常用於重新執行剛修改的初始化文檔,sh_profile和 .profile 等等.使它立即生效而不用去創建新的子shell。

  export是將一個變量導出,以給其他shell程序使用,能影響子shell。

  source 作用在本shell程序中執行,不啟動子shell,所以可以影響腳本的父shell。

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM