在linux環境下,常有通過shell腳本進入指定目錄的操作,例如有一段腳本chdir.sh:
#!/bin/sh
cd /home/user/Downloads
pwd
在shell環境下通過./chdir.sh執行這段腳本是無法進入Downloads目錄的, 這是因爲shell在執行腳本時,會創建一個子shell,並在子shell中逐個執行腳本中的指令; 而子shell中從父shell中繼承了環境變量,但是執行後不會改變父shell的環境變量。如果想要代碼中切換目錄的操作生效,只需要通過source 命令執行即可:
source ./chdir.sh
解釋:source 命令是在當前的shell環境下執行腳本 ,不會創建子shell;
每次都要輸入source是一件煩瑣的事情,其實source命令又叫點命令,在需要用到source的情況下,直接換成'.'即可:
. ./chdir.sh
注意:兩點之間有空格。