tcsh脚本中设置的环境变量不适用于bash脚本

时间:2019-09-04 10:09:46

标签: linux bash shell unix tcsh

我有一个bash脚本和一个tcsh脚本,我的tcsh脚本设置了一些环境变量,并且这些变量对于tcsh脚本执行后的bash后续步骤不可用。关于如何使tcsh中设置的环境变量可用于bash的任何建议。

这是示例代码。

Bash脚本:

$Naga> cat sample_bash.sh
#!/bin/bash
export SOURCE="NO SOURCE"
./sample_tcsh.csh
echo "Source value in bash is $SOURCE"

tcsh脚本

$Naga> cat sample_tcsh.csh
#!/usr/bin/tcsh -fvx
echo "SOURCE initially $SOURCE"
setenv SOURCE "MY DATASOURCE"
echo "SOURCE value in tcsh is $SOURCE"
exit(0)

结果

$Naga> ./sample_bash.sh
SOURCE initially NO SOURCE
SOURCE value in tcsh is MY DATASOURCE
Source value in bash is NO SOURCE

1 个答案:

答案 0 :(得分:0)

没有全球环境。每个过程都有自己的环境,可以自由更改。流程环境中的更改会传播到新的子流程,但是不会影响任何其他现有流程。

因此,shell无法通过运行外部程序来更改其自身的环境。 Shell可以执行脚本而无需创建新进程。这称为采购。因此,如果脚本修改了环境变量,则会影响到源外壳。但是bash无法提供tcsh脚本,反之亦然。

因此,如果您有tcsh脚本和bash脚本,则将环境更改从传播到bem的唯一方法是将tcsh脚本称为bash脚本。并非如此。