我正在尝试在bash中添加具有身份验证参数的代理,其中我的密码包含一个@
符号。在bash中添加带有身份验证的代理的语法如下:
export http_proxy=http://username:password@host:port_no/
因此,每当我尝试使用带有
@
的密码时,使用此代理的应用程序会尝试连接密码中跟随 @
符号的字符串。例如,如果我的密码是
p@ssword
,主机是proxy.college.com,应用程序会尝试连接ssword@proxy.college.com
。我已经尝试使用
\
转义@
符号,但这并没有解决问题。如何在不更改密码的情况下使其正常工作?注意:此问题与如何为bash命令行参数转义任意字符串或如何在bash中转义@符号不同,因为它专门处理已经存在
@
符号的命令中出现的 '@' 符号,并且该符号用于将给定字符串分隔为特定参数。附言:虽然使用HTML代码
%40
代替@
可以解决问题,但我更喜欢一种更易读的方法。
apt-get
)需要在/etc/apt/apt.conf
文件中输入用户名和密码。其他应用程序则从/etc/environment
或/home/$USER/.bashrc
指定的环境变量中获取它们。虽然这不是本问题的一部分,但我也很乐意接受其他已知的安全方法来解决这个问题。 - jobin@
),而是关于使用http_proxy
变量的任何程序的问题。如果 HTML 编码是唯一的方法来接受字面上的@
,那么你就必须这样做。 - chepner