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には何も追加されません。

おすすめ記事