在archlinux shell导出env

时间:2010-10-18 08:33:11

标签: linux shell archlinux

当我在公司时,我必须导出3个环境变量,http_proxy,https_proxy,all_proxy,

我写了一个像这样的文件〜/ bin / setproxy

#! /bin/sh
export http_proxy=http://......:8888
export https_proxy=http://......:8888
export all_proxy=http://......:8888

但是当我在bash执行此文件时,请使用env | grep http_proxy,我什么都没得到。 但是“source~ / bin / setproxy”有效,但是有没有办法将它缩短为1个字命令。 我只写了一行文件,

source ~/bin/setproxy

但它不起作用。

2 个答案:

答案 0 :(得分:3)

执行该脚本时,会生成一个子shell,并且在该shell中执行三次导出,当脚本完成时,子shell退出,这就是您没有看到环境变量设置的原因。

您可以将该代码放在一个函数中,例如在.bashrc中,然后调用它,这样就可以了,如下所示:

function setproxy {
    export http_proxy=http://......:8888
    export https_proxy=http://......:8888
    export all_proxy=http://......:8888
}

答案 1 :(得分:2)

我认为你的问题是因为你正在执行:

~/bin/setproxy

或:

your_other_file_which_sources_setproxy

两者这些情况下,它们在子shell中运行,这意味着导出在子shell中,你正在调用它们的shell。

您可以使用source的简短形式:

. ~/bin/setproxy

或创建别名:

alias sp='source ~/bin/setproxy'

.bashrc或其他启动脚本中。

后一种解决方案将允许您执行:

sp

做这项工作。