我想編寫一個perl腳本,將其工作目錄更改爲其他位置,執行某些操作,然後在我從shell調用該目錄後將該目錄留在該目錄中。 chdir
只做第一部分。如何更改呼叫者的工作目錄?Perl更改調用者的工作目錄
回答
你想做什麼是不可能的。最接近的做法是編寫一些bash,然後在調用shell中發送它,而不是運行它。軟件不能影響調用它的shell。
「不可能」不是**超嚴格**是真實的。我做了這種頑皮。但是,凡是豁免正常規章制度的人都不適用,肯定不會適用,這裏就不會問了。這絕對是最好的,如果他們*認爲*不可能:考慮他們是否嘗試過,錯過了。 :) – tchrist 2011-05-10 20:31:23
你可以做followng模擬效果:
- 打電話給你的腳本EXEC
- 在你的腳本,而不是退出,exec的一個新的外殼。
將您的perl腳本包裝在shell腳本中,在執行perl腳本之前從bash腳本中更改目錄並獲取腳本。
所以不是一個Perl腳本,如:
#!/usr/bin/perl
# my_program.pl ...
chdir "/my/directory";
...
使用,比方說,一個bash腳本,如:
#!/usr/bin/bash
cd /my/directory
perl my_program.pl "[email protected]"
和來源,當你把它叫做腳本,即
$ source my_bash.sh
或
$ . my_bash.sh
(現在你可以使用的定界符,並把它所有到一個腳本:
#!/usr/bin/bash
cd /my/directory
perl <<EOF
... include your perl script here ...
EOF
但我不認爲你可以使用@ARGV
變量)
這是比「不要那樣做,這是錯誤的」更有用的答案。謝謝。 – 2014-12-04 19:49:16
這是可能。
但是,你必須打開在讀/寫模式/dev/mem
設備之一,在存儲器中找到合適的位置存儲父進程的[dev,ino]
對爲其cwd
,並用新捅它。
即使你管理,我懷疑你可以在第二天早上看到自己在鏡子裏。我確定知道我永遠不會。 :)儘管如此,我的同事們臉上的神態完全是值得的。我使用這種方法將shell的提示從一個命令更改爲下一個命令。這只是珍貴的。直到我告訴他們我是如何做到的,他們根本弄不明白。
這也不被推薦。 :)
- 1. 在Python中更改調用者的當前工作目錄
- 2. 更改UFT工作目錄
- 3. Git更改工作目錄
- 4. 更改工作目錄
- 5. 更改工作目錄
- 6. 使用perl的TokeParser更改目錄
- 7. 使用.htaccess更改工作目錄
- 8. SWI Prolog更改工作目錄/獲取當前工作目錄?
- 9. 如何更改目錄使用Perl
- 10. 更改Xcode中的工作目錄
- 11. 更改msbuild.exe的工作目錄
- 12. 從bash調用python,如何更改python工作目錄?
- 13. 如何在Emacs中更改構建/調試的工作目錄?
- 14. 在C中更改工作目錄?
- 15. 無法更改當前工作目錄
- 16. 如何更改當前工作目錄
- 17. 更改目錄在Python,不工作
- 18. knitr with bash:更改工作目錄
- 19. Python 3.4 - win32com更改工作目錄
- 20. Java更改文件工作目錄
- 21. 更改工作目錄swi-Prolog
- 22. grunt + mochaTest:更改工作目錄?
- 23. 更改默認/工作目錄Xcode 3.2.6
- 24. 將工作目錄更改爲當前腳本的目錄
- 25. Perl模塊Telnet:Cd問題(更改目錄)
- 26. 如何在perl中更改目錄?
- 27. 從Windows cmd.exe更改Perl目錄
- 28. 如何在Visual Studio中調試時更改工作目錄?
- 29. 在java中更改目錄所有者
- 30. 當rprofile.site更改工作目錄時,RStudio不加載工作區
幸運的是,這是不可能的。 – Ingo 2011-05-10 19:30:37