2012-11-15 37 views
0

在一個bash腳本中,我想chroot到一個目錄,然後cd立即到達另一個子目錄。我想通過exec chroot [dir] cd [subdir]來做到這一點,但我找不到文件錯誤。這是因爲cd命令不在新的目錄樹中。 cd命令通常由shell提供,但我需要避免使用eval來啓動子進程。改變目錄在linux中沒有shell?

有沒有辦法改變目錄,而不需要在Linux的shell?我在linux中查找包含cd的軟件包,但是coreutils不包含它。謝謝。

+3

'cd'是一個shell內置的命令。它的功能不能由外部程序執行,所以沒有這樣的程序,也沒有包含其中的程序包。 –

+1

As @ n.m。指出,這可能是不可能的。你需要「cd」的原因是什麼,也許我們可以避免執行它的需要。 – cmh

+1

這甚至沒有意義。即使你可以運行'exec chroot [dir] cd [subdir]',一旦它退出,你就會回到你的舊目錄,因爲目錄的改變(比如環境改變)只能被子進程訪問。 –

回答

1

安裝schroot程序/軟件包。這似乎有一個選項來改變diretory:

-d, --directory=directory 
    Change to directory inside the chroot before running the command or login shell. 
2

有沒有cd計劃。 cd是你的外殼的內建;它會使shell更改它自己的當前目錄。進程無法更改其他進程的當前目錄,因此沒有可能的程序(它會在另一個進程中運行,並且不會影響調用進程)。

+0

謝謝您的回覆。我希望chroot本身可以選擇更改目錄。 – morfys