如果我在bash中创建一个环境变量,例如SPORT = baseball,则切换到tcsh并将其更改为“ running”。如果我改回bash,SPORT将显示为“正在运行”吗?(我会自己尝试,但我只有bash)
这是一个实际的实验,完全可以满足您的要求;它运行bash
,设置环境变量,然后启动tcsh
并更改其值。然后,它检查中的值bash
。
#!/bin/bash
export SPORT=baseball
printf 'SPORT is "%s"\n' "$SPORT"
tcsh -c 'echo $SPORT; setenv SPORT archery; echo $SPORT'
printf 'SPORT is "%s"\n' "$SPORT"
运行此bash
脚本,调用该脚本tcsh
将导致
SPORT is "baseball"
baseball
archery
SPORT is "baseball"
但是我们甚至不必切换到tcsh
实际操作中,就足以(...)
在我们的bash
脚本中引入一个具有单独环境的子shell :
#!/bin/bash
export SPORT=baseball
printf 'SPORT is "%s"\n' "$SPORT"
(
echo "$SPORT"
export SPORT=archery
echo "$SPORT"
)
printf 'SPORT is "%s"\n' "$SPORT"
输出将保持不变。
一个环境不可能影响另一个环境,只有一个例外:新环境从父环境继承环境变量。子外壳程序(如上例所示)也继承了未导出的外壳程序变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句