Shell修改当前终端环境变量
2017-08-20 本文已影响489人
Jerry2015
由于很多不可知的明显原因,我需要在终端里使用下面这样一个命令来设置代理。
export http_proxy=127.0.0.1:1234
export https_proxy=127.0.0.1:1234
然后每次都需要打这么多字实在是不爽。那怎么办?写shell脚本。但是把上面代码写成一个shell脚本有个问题,脚本只能改变脚本本身的环境变量,并不能改变调用shell脚本的终端的环境变量。
那怎么破?
我们可以曲线来解决。
echo 'export http_proxy=127.0.0.1:1234
export https_proxy=127.0.0.1:1234'
保存文件为setproxy。然后这样调用
`setproxy`
神奇的事情发生了,当前终端的环境变量被修改了。
怎么回事?其实很简单,我们脚本本身保存了设置代理的命令本身。然后脚本不再是直接修改代理,而是输出设置代理需要执行的命令,然后利用``(数字1左边的按键)包裹起来执行脚本内容,然后因为实际执行export的是当前终端,那修改的也当然是当前终端的代理了。
如果你把setproxy所在文件夹设置环境变量。那就可以在任意目录通过setproxy
来修改环境变量了。EasyGame。
当然如果你喜欢可以继续再写个脚本。
#!/bin/bash
s=$1
spath=`which $s`
scontent=`cat ${spath} | grep -v "#"`
保存文件名为:getrun
然后通过
`getrun anyshell`
就可以把任意shell脚本放到当前环境变量下执行了。