0

当我在公司时,我必须导出 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 个单词的命令。我只写了另一个文件 1 行,

source ~/bin/setproxy

但它不起作用。

4

2 回答 2

3

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

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

function setproxy {
    export http_proxy=http://......:8888
    export https_proxy=http://......:8888
    export all_proxy=http://......:8888
}
于 2010-10-18T08:35:18.287 回答
2

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

~/bin/setproxy

或者:

your_other_file_which_sources_setproxy

这两种情况下,它们都在子 shell 中运行,这意味着导出位于该子 shell 中,而不是您从中调用它们的 shell。

您可以使用以下缩写形式source

. ~/bin/setproxy

或创建别名:

alias sp='source ~/bin/setproxy'

在您.bashrc或其他启动脚本中。

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

sp

做这项工作。

于 2010-10-18T08:36:49.847 回答