在 archlinux shell 中导出环境

发布于 2024-09-27 21:11:57 字数 440 浏览 5 评论 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

但它不起作用。

when I at company , I have to export 3 enviroment variables, http_proxy,https_proxy,all_proxy,

I wrote a file ~/bin/setproxy like this

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

but when I execute this file at bash, then use env | grep http_proxy , I got nothing.
but "source ~/bin/setproxy" works, but is there any way short this to 1 word command.
I wrote another file only 1 line,

source ~/bin/setproxy

but it does not work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

极致的悲 2024-10-04 21:11:57

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

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

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

When you execute that script a sub-shell is spawned and the three export are perfomed in that shell, when the script finishes, the sub-shell exits, that's why you don't see the environment variables as set.

You could put that code in a function, say in your .bashrc, and call that, this way it will work, something like the following:

function setproxy {
    export http_proxy=http://......:8888
    export https_proxy=http://......:8888
    export all_proxy=http://......:8888
}
一指流沙 2024-10-04 21:11:57

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

~/bin/setproxy

或者:

your_other_file_which_sources_setproxy

两种这些情况下,它们在子shell中运行,这意味着导出是在该子shell中,而不是你的shell正在给他们打电话。

您可以使用缩写形式 source:

. ~/bin/setproxy

创建别名:

alias sp='source ~/bin/setproxy'

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

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

sp

完成工作。

I think your problem is because you are executing either:

~/bin/setproxy

or:

your_other_file_which_sources_setproxy

In both those cases, they run in a subshell which means the export is in that subshell, not the shell you're calling them from.

You can either use the short form of source:

. ~/bin/setproxy

or create an alias:

alias sp='source ~/bin/setproxy'

in your .bashrc or other startup scripts.

That latter solution will allow you to just execute:

sp

to do the work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文