0

我按照arch wiki 文章创建了一个具有以下功能的 shell 脚本文件:

#!/bin/bash
function proxy(){
     echo -n "username:"
     read -e username
     echo -n "password:"
     read -es password
     export http_proxy="http://$username:$password@proxyserver:8080/"
     export https_proxy=$http_proxy
     export ftp_proxy=$http_proxy
     export rsync_proxy=$http_proxy
     export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"
     echo -e "\nProxy environment variable set."
 }
 function proxyoff(){
     unset HTTP_PROXY
     unset http_proxy
     unset HTTPS_PROXY
     unset https_proxy
     unset FTP_PROXY
     unset ftp_proxy
     unset RSYNC_PROXY
     unset rsync_proxy
     echo -e "\nProxy environment variable removed."
 } 
case "$1" in
     'proxyon')
              proxyon
              ;;
     'proxyoff')
              proxyoff
              ;;
     *)# default execute
              proxyon
esac

执行后(作为 root 和用户),我按照上面脚本的要求输入了用户名密码,但我无法看到已设置的别名!我打印了“printenv”来查看环境变量。谁能指出我的愚蠢。

4

1 回答 1

1

不要执行脚本,而是它。执行将在子 shell 中发生,这就是阻止您看到脚本应该引起的副作用的原因。

通过说来调用脚本:

source /path/to/script

或者

. /path/to/script

(注意.上一行中和路径之间的空格)

于 2013-09-04T14:19:16.833 回答