我想在ruby腳本中更改當前shell的pwd。所以:在ruby腳本中執行cd命令
> pwd
/tmp
> ruby cdscript.rb
> pwd
/usr/bin
這是我現在所擁有的代碼:
exec('cd /usr/bin')
不幸的是,CD是一個內置命令。所以:
`exec': No such file or directory - cd (Errno:ENOENT)
對此的任何解決方法?
沒辦法讓它在紅寶石本身工作,所以我換了齒輪。我修改了腳本以輸出目標目錄路徑,然後在.bashrc中定義了一個函數,該函數可以通過腳本傳遞參數,然後cd到正確的目錄。沒有像我所希望的那樣自成一體,但它做到了這一點。
感謝您的回覆,夥計們。
你可以試試'光盤的/ usr/bin'或系統(「CD的/ usr/bin中」)在你的Ruby代碼,但這隻會更換新外殼的當前目錄(這是子進程作爲shell的孩子的紅寶石),但是這是毫無意義的,因爲我不能在* inx系統中更改父進程的目錄。 – jcubic 2010-08-04 22:27:54
殼解決方案如何?就像在bash配置文件中放入_alias usb =「cd/usr/bin」_,然後在shell中輸入_usb_一樣。 – 2010-08-04 22:28:21
有一堆代碼邏輯到達執行部分(它實際上不是一個靜態路徑)。這只是一個簡單的例子,所以別名不是最優的。 – 2010-08-04 22:30:13