script.sh를 사용하여 Linux에서 영구 환경 변수를 만드는 것이 작동하지 않습니다.

script.sh를 사용하여 Linux에서 영구 환경 변수를 만드는 것이 작동하지 않습니다.

나는 이 스크립트를 사용하고 있습니다:

#!/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에는 아무것도 추가되지 않습니다.

관련 정보