update post: 为单一命令设置代理环境变量的终端函数
This commit is contained in:
parent
e0f41295db
commit
8e75de2275
|
@ -33,11 +33,27 @@ function proxyenv {
|
|||
HTTPS_PROXY=${proxy_dest}
|
||||
|
||||
export proxy http_proxy https_proxy PROXY HTTP_RPOXY HTTPS_PROXY
|
||||
eval "$@"
|
||||
"$@"
|
||||
)
|
||||
}
|
||||
```
|
||||
|
||||
> Update: 注意最后一条命令现在是 `"$@"` 而不是以前的 `eval "$@"`,这样才能够避免括号产生额外的意义。
|
||||
>
|
||||
> 在 Bash 下使用 `help eval` 可以看到 `eval` 的作用,其会将所有作为参数的字符串合并为一个,然后直接传递给 shell 运行,所以这些字符串会再一次经过变量代换、命令行代换、引号移除等**展开**过程。
|
||||
>
|
||||
> ```
|
||||
> $ help eval
|
||||
> eval: eval [arg ...]
|
||||
> Execute arguments as a shell command.
|
||||
>
|
||||
> Combine ARGs into a single string, use the result as input to the shell,
|
||||
> and execute the resulting commands.
|
||||
>
|
||||
> Exit Status:
|
||||
> Returns exit status of command or success if command is null.
|
||||
> ```
|
||||
|
||||
### 针对 sudo 命令
|
||||
|
||||
在使用 `sudo` 命令时,它的默认行为是不保留任何当前 shell 下的环境变量,因此即便使用 `proxyenv sudo wget` 命令,也无法在 `wget` 中使用这些环境变量。一个临时的解决方案是使用 `sudo` 的 `--preserve-env` 参数,像下面这样
|
||||
|
|
Loading…
Reference in a new issue