【发布时间】:2024-07-14 15:00:02
【问题描述】:
我有一个 shell 脚本可以将我的路径永久更改为另一个路径。我的要求是使用 perl 脚本来获取它(perl 脚本还有一些其他代码,最后它必须获取下面的 shell scipt)
test.sh:
!/bin/bash
cd /db/oa/invoke/path
test.pl:
!/usr/bin/perl
system("source /home/test.sh");
但采购不起作用。我知道命令 system("sh /home/test.sh --help") 用于从 perl 脚本执行 shell 脚本。但我需要类似的命令来获取 shell 脚本。如果我遗漏任何细节,请告知。我已经看到有人就同一主题提出问题,但我没有看到合适的采购解决方案。谁能帮我解决这个问题。
问候阿南德
【问题讨论】:
-
没有理智的方法来做你所要求的。子进程不能影响其父进程的环境。您基本上必须拥有 Perl
execBash,然后将execPerl 重新置于自身之上才能实现这一目标。 -
此外,shebang 需要以两个字符
#!开头,以使其在语法上有效且实际有用。 -
如果你是 shell 脚本,就像你的例子,只是改变目录,你可以使用 perl 的
chdir函数来改变目录。不过,您仍然有上面提出的所有问题。