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

4
我有一个文件,包含了应用程序运行所需的所有环境变量,格式如下...
setenv DISPLAY invest7@example.com
setenv HOST example.com
setenv HOSTNAME sk
...

如何使用上述文件在bash中设置环境变量?是否有一种方法可以在bash中使用setenv命令?


1
这似乎是一个愚蠢的问题,但你得到了一个非常好的答案,做得很好。 - dmckee --- ex-moderator kitten
3个回答

6
你可以定义一个名为 setenv 的函数:
function setenv() { export "$1=$2"; }

要设置环境变量,请执行以下命令:source文件名

. your_file

2
eval 不是必需的,避免使用它可以减少一些安全风险:setenv() { export "$1=$2"; } - Dennis Williamson

1

这是一个改进版本。

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

0

这里是一个更完整的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
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接