当我在公司时,我必须导出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
但它不起作用。
答案 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
做这项工作。