2015-04-01 53 views
0

我有我运行一个脚本时,代理称为proxy.sh其背后自动套不同的代理服务器设置,如:sudo gem的别名--proxy <PROXY>或bash函数?

  • http_proxy=<PROXY>
  • https_proxy=<PROXY>

一旦我运行此脚本我会爱它,如果它可以自动拦截红宝石gem命令并添加代理信息以及:

sudo gem install ..... =>sudo gem install --http-proxy=<PROXY> ....

起初我想写一个别名,但我明白我需要实际上做一个函数?那是对的吗?

我该如何处理?

如果我运行proxy.sh打字:sudo gem install TEST会自动运行sudo gem install --http-proxy=<PROXY> TEST

回答

3

你可以做一个别名。在~/.bash_aliases

alias sudo="sudo " 
alias gemproxy="gem install --http-proxy=<PROXY>" 

sudo别名(中间有空格),如果你想使用别名gemproxysudo是很重要的。

编辑:拦截gem install,你可以在你的.bash_aliases补充一点:

gem() { 
    if [[ [email protected] == install* ]]; then 
     arg=${@#"install "} 
     command gem install --http-proxy=PROXY $arg 
    fi 
} 

但有了这个,你将永远出口代理,即使你不是它的后面。您可以添加验证以查看是否设置了环境变量http_proxy

+0

这个工程,但我真的想要拦截'sudo gem install'并自动插入代理,如果我在代理模式。 – Jeef 2015-04-01 13:22:22

+0

我编辑了我的答案。也许现在就是你想要的。 – 2015-04-01 13:39:47

+0

我把它封装在:if [[-z“$ http_proxy”]];那么这一切都很好 – Jeef 2015-04-08 15:03:49