Linux 在shell脚本中更改shell并执行命令
我面临的情况是,我必须在脚本中执行一个只读脚本,该脚本更改shell并设置一些环境变量。现在我需要从脚本中访问这些环境变量 这种情况就像脚本一样Linux 在shell脚本中更改shell并执行命令,linux,shell,Linux,Shell,我面临的情况是,我必须在脚本中执行一个只读脚本,该脚本更改shell并设置一些环境变量。现在我需要从脚本中访问这些环境变量 这种情况就像脚本一样 #!/bin/csh -f bash #set some environment variables A,B,C 我没有对script-A的写访问权限,它执行很多配置,这些配置对于script-B是必需的 我已经尝试了脚本-B #!/bin/csh -f ./script-A echo $A 但是,由于shell已更改,我无法访问$A。是否有一些
#!/bin/csh -f
bash
#set some environment variables A,B,C
我没有对script-A的写访问权限,它执行很多配置,这些配置对于script-B是必需的
我已经尝试了脚本-B
#!/bin/csh -f
./script-A
echo $A
但是,由于shell已更改,我无法访问$A。是否有一些解决方法,我可以这样做
理想情况下,我的script-B中的命令必须在script-A的新环境中运行。在手动交互时,这很好,因为我可以先执行script-A,然后执行所需的命令。但是,我必须自动化整个过程。如果script-A是csh脚本,那么
source script-A
即使script-A包含exit语句,也可以这样做:
$ cat x.csh
#!/bin/csh
source y.csh
echo $A - $B
cat y.csh
#!/bin/csh
set A=10
set B=20
exit 1
set B=30
$ ./x.csh
10 - 20
如果script-A位于另一个shell中,则需要重写script-B以匹配该shell
哦,顺便说一句,如果可能的话:用您需要执行的shell语言重写您自己的脚本,以便您可以使用shell的源命令执行它。这不是实际的脚本-A;就目前的情况而言,它会给你一个等待命令的交互式Bash。我似乎犯了一些错误abt Script-A。因为它目前也不起作用。但Q的哲学仍然是一样的。有一个脚本可以更改shell,并在shell中进行一些配置,使其保持交互。我需要在该shell中执行一些命令,然后您应该为另一个文件提供源代码,而不是执行它:source script-A。这是我尝试的:在script-B中,我为source script-A提供了源代码。但是,脚本中在它之后的命令没有被执行。然后,您必须显示至少部分脚本,这样我们就有了一个源代码。如果每个子进程都执行相同的命令解释器,但情况似乎并非如此。您无法从csh脚本中获取bash脚本的源代码。但他有/bin/csh在他的问题中位于脚本A和脚本B的顶部。。。即使脚本A在内部调用bash,也不应中断源代码。