加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – shell导出变量不生效

发布时间:2020-12-14 01:36:50 所属栏目:Linux 来源:网络整理
导读:我(在mac osx上)经常使用 export http_proxy=http://192.168.0.205:1099 代理http连接以获得更高的下载速度.为了简单起见,我编写了一个名为proxy.sh的shell文件来执行此操作: #!/bin/shexport http_proxy=http://192.168.0.205:1099 在我下载之前,我执行pro
我(在mac osx上)经常使用

export http_proxy=http://192.168.0.205:1099

代理http连接以获得更高的下载速度.为了简单起见,我编写了一个名为proxy.sh的shell文件来执行此操作:

#!/bin/sh
export http_proxy=http://192.168.0.205:1099

在我下载之前,我执行proxy.sh shell命令,但我发现它没有生效.它在当前的commnad窗口(终端)中丢失了http_proxy变量.我必须在当前终端输入export命令,它才会生效.

所以我想知道这是什么原因和解决方案?谢谢.

解决方法

“正常”运行shell脚本(例如使用proxy.sh)会导致在子进程中运行,从而不会影响父进程的环境.

用.或者source将在当前shell的上下文中运行shell脚本,因此它将能够使用以下方法之一来影响环境:

. proxy.sh
source proxy.sh

另一种可能性(如果你至少使用bash)是创建一个别名来为你完成工作.您可以使用以下内容:

alias faster='export http_proxy=http://192.168.0.205:1099'

这样你就可以在命令行上更快地键入它,然后它将导出该变量(在当前shell的上下文中).

您还可以允许一次性设置,例如:

alias faster='http_proxy=http://192.168.0.205:1099'

然后使用:

faster your_program

这将转化为:

http_proxy=http://192.168.0.205:1099 your_program

这是一种为一个命令调用设置变量的bash方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读