sudo gem --proxy <PROXY> 或 bash 函数的别名?

Alias to sudo gem --proxy <PROXY> or bash function?

我有一个脚本,我 运行 在名为 proxy.sh 的代理后面时自动设置各种代理设置,例如:

一旦我 运行 这个脚本,如果它可以自动拦截 ruby gem 命令并添加代理信息,我会很高兴:

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

起初我想写一个别名,但我知道我需要实际制作一个函数?对吗?

我该如何处理?

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

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

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

如果您想将别名 gemproxysudo 一起使用,sudo 别名(带 space)很重要。

编辑:拦截gem install,你可以在你的.bash_aliases中添加这个:

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

但是有了这个,即使您不支持它,您也将始终导出代理。可以加个验证看看环境变量http_proxy是否设置了