如何使用setenv在bash中设置环境变量?

如何使用setenv在bash中设置环境变量?,bash,tcsh,setenv,Bash,Tcsh,Setenv,我有一个包含应用程序运行所需的所有环境变量的文件,格式如下 setenv DISPLAY invest7@example.com setenv HOST example.com setenv HOSTNAME sk ... 我将如何设置环境。bash中的变量是否使用上述文件?有没有办法在bash中使用setenv命令?您可以定义一个名为setenv的函数: function setenv() { export "$1=$2"; } 要设置环境变量,请选择文件源: . your_file 这

我有一个包含应用程序运行所需的所有环境变量的文件,格式如下

setenv DISPLAY invest7@example.com
setenv HOST example.com
setenv HOSTNAME sk
...

我将如何设置环境。bash中的变量是否使用上述文件?有没有办法在bash中使用
setenv
命令?

您可以定义一个名为
setenv
的函数:

function setenv() { export "$1=$2"; }
要设置环境变量,请选择文件源:

. your_file

这是一个改进的版本

# Mimic csh/tsch setenv
function setenv()
{
    if [ $# = 2 ]; then
        export $1=$2;
    else
        echo "Usage: setenv [NAME] [VALUE]";
    fi
}

下面是ksh/bash的更完整版本。它的行为类似于csh/tcsh setenv,而与参数的数量无关

setenv () {
    if (( $# == 0 )); then
        env
        return 0
    fi

    if [[ $1 == *[!A-Za-z0-9_]* ]]; then
        printf 'setenv: not a valid identifier -- %s\n' "$1" >&2
        return 1
    fi

    case $# in
        1)
            export "$1"
            ;;
        2)
            export "$1=$2"
            ;;
        *)
            printf 'Usage: setenv [VARIABLE [VALUE]]\n' >&2
            return 1
    esac
}

这似乎是一个愚蠢的问题,但你得到了一个非常好的答案,做得很好。
eval
是不必要的,避免它可以减少一些安全风险:
setenv(){export“$1=$2”;}