我遇到一个问题,我可以使用bash中的代理设置运行Java,但不能在zsh中运行。

为了运行jar,我首先使用env变量设置代理设置:

export JAVA_OPTS="-Dhttp.proxyHost=my.proxy.org -Dhttp.proxyPort=80 -Dhttps.proxyHost=my.proxy.org -Dhttps.proxyPort=80 -DsocksProxyHost=my.proxy.org -DsocksProxyPort=80"


然后我用以下命令运行jar

java $JAVA_OPTS -jar path/to/file.jar


它在bash中成功运行,但是在zsh中运行时,它无法识别代理设置,并且在尝试建立网络连接时失败。

有人知道我该如何解决才能使用zsh吗?

最佳答案

zsh的单词拆分与bash有所不同。我认为您需要明确表示要拆分它。考虑一下,它就像一个bash引用变量

$ export JAVA_OPTS="-Dhttp.proxyHost=my.proxy.org -Dhttp.proxyPort=80 -Dhttps.proxyHost=my.proxy.org -Dhttps.proxyPort=80 -DsocksProxyHost=my.proxy.org -DsocksProxyPort=80"
$ printf ">%s<\n" $JAVA_OPTS
>-Dhttp.proxyHost=my.proxy.org -Dhttp.proxyPort=80 -Dhttps.proxyHost=my.proxy.org -Dhttps.proxyPort=80 -DsocksProxyHost=my.proxy.org -DsocksProxyPort=80<


与这个

$ printf ">%s<\n" ${=JAVA_OPTS}
>-Dhttp.proxyHost=my.proxy.org<
>-Dhttp.proxyPort=80<
>-Dhttps.proxyHost=my.proxy.org<
>-Dhttps.proxyPort=80<
>-DsocksProxyHost=my.proxy.org<
>-DsocksProxyPort=80<


参见:man zshexpn

09-26 23:01