博客 / 詳情

返回

腳本執行方式&shell環境變量設置細節

一、腳本執行

1.啓動一個新的shell來執行腳本

(1)可執行腳本

運行方式:輸入腳本【路徑+名稱】

./test.sh
/home/test.sh
test.sh  # $PATH裏必須有該文件的路徑才行

(2)不可執行腳本

運行方式:需要用【解釋器 路徑+名稱】運行,或給腳本加執行權限(chmod +x)

bash ./test.sh
sh ./test.sh

2.在當前shell裏執行腳本

運行方式: 【source. 路徑+名稱】

source ~/.bashrc
. ~/.bashrc

~ 是用户主目錄的縮寫

  • 對 root:~ 就是 /root
  • 對普通用户 f:~ 就是 /home/f
 # 下面兩者等價
source ~/.bashrc 
source /root/.bashrc

文件前面加 . 表示該文件為隱藏文件,只有用ls -a才能看到。

二、shell環境變量設置細節

shell分為登錄式和非登錄式,交互式和非交互式,可以命令行交互的都屬於交互式。

登錄式和非登錄式啓動時調用的初始化文件不同:

  • 登錄式shell在登陸時,會執行.profile.bash_profile。(.profile可以被多種兼容sh的shell讀取,而.bash_profile特定於Bash)
  • 非登錄式在啓動時執行.bashrc

以修改$PATH環境變量為例:

  1. 當想要追加路徑給PATH時,需要PATH=$PATH:/usr/local/go/bin,將該路徑追加給原有的PATH變量。
  2. Shell 中變量默認是普通變量,只有 export 之後才會進入環境變量表。子進程只能看到環境變量,不會看到普通變量。

    也就是説:

    FOO=abc           # 僅當前 shell 能看到
    export BAR=123    # 當前 shell + 子進程都能看到
    
    # 在./bashrc中
    # 當前啓動的bash裏啓動的任何程序、任何腳本、任何新的子 bash都能繼承這個變量
    export PATH=$PATH:/usr/local/go/bin
    
    # 只有當前bash能用這個環境變量
    PATH=$PATH:/usr/local/go/bin
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.