2016-09-24 80 views
0

我是bash腳本編寫新手。這對許多人來說可能很明顯。請多多包涵。關於bash腳本的說明

我有一個shell腳本如下:

#!/bin/bash 
echo `pwd` 
cd /home/foo/bar 
echo `pwd` 

比方說,我目前在目錄:/家庭/ foo1

如果我執行上面的腳本它打印:

/home/foo1 
/home/foo/bar 

但是一旦劇本完成執行,我已經看到它仍然在dir/home/foo1中

我也看到了一些腳本,其中有明確的命令用'cd - '命令重置工作目錄。

如果bash執行腳本中的所有行作爲命令,爲什麼它會再次重置工作目錄?

回答

1

當您運行bash的交互式會話時,您執行一個腳本(例如./myscript.sh),然後bash創建一個新的bash進程來執行該腳本。最初,該進程獲取與原始進程相同環境的副本(例如當前工作目錄或環境變量),但如果腳本以某種方式修改環境,則此更改僅影響新進程,而不會影響原始進程。因此,當腳本退出時,您可以回到保留原始環境的原始過程。因此,不可能從腳本修改原始shell的當前目錄。

作爲一個側面說明,以下行

echo `pwd` 

並沒有太大的意義。你必須做echo $PWD或簡單地pwd

+1

這個。另外,試着用'source myscript.sh'來執行你的腳本 –