在linux中使用script.sh创建永久环境变量不起作用

在linux中使用script.sh创建永久环境变量不起作用

我正在使用这个脚本:

#!/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 添加任何内容。

相关内容