我想编写一个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. 更改工作目录
- 4. 使用.htaccess更改工作目录
- 5. SWI Prolog更改工作目录/获取当前工作目录?
- 6. 更改msbuild.exe的工作目录
- 7. 更改Xcode中的工作目录
- 8. 从bash调用python,如何更改python工作目录?
- 9. 如何在Emacs中更改构建/调试的工作目录?
- 10. grunt + mochaTest:更改工作目录?
- 11. 如何更改当前工作目录
- 12. Python 3.4 - win32com更改工作目录
- 13. 更改工作目录swi-Prolog
- 14. 将工作目录更改为当前脚本的目录
- 15. 如何在Visual Studio中调试时更改工作目录?
- 16. 在java中更改目录所有者
- 17. 当rprofile.site更改工作目录时,RStudio不加载工作区
- 18. 从红宝石脚本更改调用shell的当前工作目录
- 19. Rcpp:使用嵌入式R代码调用时无法更改工作目录
- 20. 在VS2008中全局更改“调试/工作目录”(不是每个用户)
- 21. 如何暂时更改Perl使用的tmp目录?
- 22. 如何在使用Maven运行Jetty时更改工作目录?
- 23. 如何使用Net :: SSH2更改工作目录?
- 24. 使用perl模块的当前工作目录版本
- 25. 更改目录
- 26. 更改目录
- 27. 更改目录
- 28. 如何从网络工作者调用共享工作者?
- 29. 具有更改工作目录的Java LibGDX导出jar包exlipse
- 30. 获取当前工作空间目录的更改列表号
幸运的是,这是不可能的。 – Ingo 2011-05-10 19:30:37