不同shell上的源shell脚本(csh和bash)

时间:2014-02-26 09:08:13

标签: shell

我需要编写一个脚本,使用setenv或export来设置变量,具体取决于shell(bash,csh)

my_shell=`ps -p $$ | grep $$ | awk '{print $4}'`
if [ "$my_shell" = "bash" ]
then
    export x=1
else
    setenv x 1
fi

我知道csh和bash对于of语句有不同的语法,但有没有办法解决这个问题

谢谢

1 个答案:

答案 0 :(得分:0)

不,但有一个可能有帮助的技巧。

首先用shell的语法编写脚本。我在这里使用csh:

 setenv x 1

现在你可以这样做:

csh -c 'source setup-env.csh;exec bash'

source

这将创建具有正确环境的C shell。在此shell中启动BASH会将所有环境变量导出到它。

或者,您可以在BASH中创建一个函数setenv

setenv() {
  echo setting $1 to $2
  export $1=$2
}

当然,这只适用于简单的csh脚本。