在一個bash腳本中,我想chroot
到一個目錄,然後cd
立即到達另一個子目錄。我想通過exec chroot [dir] cd [subdir]
來做到這一點,但我找不到文件錯誤。這是因爲cd
命令不在新的目錄樹中。 cd
命令通常由shell提供,但我需要避免使用eval來啓動子進程。改變目錄在linux中沒有shell?
有沒有辦法改變目錄,而不需要在Linux的shell?我在linux中查找包含cd
的軟件包,但是coreutils不包含它。謝謝。
在一個bash腳本中,我想chroot
到一個目錄,然後cd
立即到達另一個子目錄。我想通過exec chroot [dir] cd [subdir]
來做到這一點,但我找不到文件錯誤。這是因爲cd
命令不在新的目錄樹中。 cd
命令通常由shell提供,但我需要避免使用eval來啓動子進程。改變目錄在linux中沒有shell?
有沒有辦法改變目錄,而不需要在Linux的shell?我在linux中查找包含cd
的軟件包,但是coreutils不包含它。謝謝。
安裝schroot
程序/軟件包。這似乎有一個選項來改變diretory:
-d, --directory=directory
Change to directory inside the chroot before running the command or login shell.
有沒有cd
計劃。 cd
是你的外殼的內建;它會使shell更改它自己的當前目錄。進程無法更改其他進程的當前目錄,因此沒有可能的程序(它會在另一個進程中運行,並且不會影響調用進程)。
謝謝您的回覆。我希望chroot本身可以選擇更改目錄。 – morfys
'cd'是一個shell內置的命令。它的功能不能由外部程序執行,所以沒有這樣的程序,也沒有包含其中的程序包。 –
As @ n.m。指出,這可能是不可能的。你需要「cd」的原因是什麼,也許我們可以避免執行它的需要。 – cmh
這甚至沒有意義。即使你可以運行'exec chroot [dir] cd [subdir]',一旦它退出,你就會回到你的舊目錄,因爲目錄的改變(比如環境改變)只能被子進程訪問。 –