我正在使用这个脚本:
#!/bin/bash
case "$1" in
start)
echo "Iniciando servicio"
export http_proxy=socks5://192.168.1.2:9090
export https_proxy <----I don't want it exported
;;
stop)
echo "Deteniendo servicio"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
但是在执行它时env
我没有得到我创建的变量:(
root@:~# /etc/init.d/a start
Iniciando servicio
root@:~# env
SHELL=/bin/bash
NO_AT_BRIDGE=1
PWD=/root
LOGNAME=root
LS_OPTIONS=--color=auto
HOME=/root
TERM=xterm
USER=root
SHLVL=1
SSH_CLIENT=
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAIL=/var/mail/root
SSH_TTY=/dev/pts/0
TEXTDOMAIN=Linux-PAM
_=/usr/bin/env
我尝试使用源代码运行脚本,但它不起作用,因为我想导出单个变量而不是全部
答案1
当您执行脚本时,它会启动一个新的 bash 进程。当脚本结束时,该进程将关闭,并带走环境变量。
您需要source
该脚本而不是执行它:
source /etc/init.d/a start
另外,您不会从export
命令中获得任何输出,因此
export http_proxy=socks5://192.168.1.2:9090 >> ~/.bashrc
不会向 .bashrc 添加任何内容。