pyt*_*hor 3 perl working-directory
我想编写一个perl脚本,将其工作目录更改为其他地方,执行某些操作,然后在我从shell调用它之后将其留在该目录中. chdir只有第一部分.如何更改呼叫者的工作目录?
这是可能的.
但是,您必须以/dev/mem读/写模式打开其中一个设备,在内存中找到存储父进程的[dev,ino]对的正确位置cwd,然后将其与新进程一起戳.
即使你成功了,我怀疑你第二天早上能看到自己在镜子里.我确定知道我永远不可能.:)尽管如此,我的同事脸上的完整奇迹看起来还是值得的.我使用这种方法将shell的提示从一个命令更改为下一个命令.这很珍贵.直到我告诉他们我是怎么做的,他们才弄明白.
这也是不推荐的.:)
将perl脚本包装在shell脚本中,在执行perl脚本之前从bash脚本更改目录,然后获取脚本.
所以不是像以下那样的Perl脚本:
#!/usr/bin/perl
# my_program.pl ...
chdir "/my/directory";
...
Run Code Online (Sandbox Code Playgroud)
比如使用bash脚本:
#!/usr/bin/bash
cd /my/directory
perl my_program.pl "$@"
Run Code Online (Sandbox Code Playgroud)
并在调用时提供脚本,即
$ source my_bash.sh
Run Code Online (Sandbox Code Playgroud)
要么
$ . my_bash.sh
Run Code Online (Sandbox Code Playgroud)
(现在您可以使用heredoc语法并将其全部放入一个脚本中:
#!/usr/bin/bash
cd /my/directory
perl <<EOF
... include your perl script here ...
EOF
Run Code Online (Sandbox Code Playgroud)
但我不认为你可以使用@ARGV变量)
| 归档时间: |
|
| 查看次数: |
6729 次 |
| 最近记录: |