FreeBSD 使用代理运行命令

FreeBSD 使用代理运行命令

临时设置

这种方法仅对当前的 Session 有效,适合一次性使用,直接使用 env 把变量加在命令前面即可。

sh 复制代码
env [http](or https)_proxy=[通信协议]://[IP]:[端口] 命令

例如 doas env https_proxy=http://192.168.1.100:12334 pkg update

永久应用代理, Linux 风格

这种方法可以永久生效,需要编辑配置文件,注意自己当前 Shell 的类型,配置文件对照表如下:

Shell Configuration file type
bash .bashrc
sh .profile
zsh .zprofile and .zshrc
ksh .kshrc
csh / tcsh .cshrc

首先使用文本编辑器打开当前 Shell 的配置文件,如果不知道,可以使用 echo ${0} 命令查看。

我以 sh 为例,配置文件在 ~/.profile ,使用 ee 命令打开:

sh 复制代码
ee ~/.profile

在文件的末尾添加如下内容:

sh 复制代码
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
export ftp_proxy="http://127.0.0.1:7890"
export no_proxy="localhost,127.0.0.1"

然后执行 source 命令让修改生效:

sh 复制代码
source ~/.profile

用户名和密码

如果你的代理服务器需要用户名和密码,请按照如下格式书写:

sh 复制代码
export http_proxy="http://[用户名]:[密码]@[代理地址]:[端口]"

顺便说一下,这个 URL 格式是通用的,例如你要录制自己家的网络摄像头:

sh 复制代码
ffplay -rtsp_transport tcp -i "rtsp://username:password@192.168.1.101:554/stream1"

也是类似的格式。

永久应用配置, FreeBSD 风格

FreeBSD 强调系统配置和用户 Shell 配置的分离,如上表所示, Shell 的类型很多,相互之间语法都有区别,配置文件名称也不一样,这会带来额外的麻烦,BSD 风格倾向于把事情做在"最底层",确保逻辑的统一性和健壮性。

如果说 FreeBSD 的设计像是一个由总设计师统一规划的现代建筑,那么 Linux 的设计更像是一个由不同社区在几十年间自发扩建出来的热闹村落。

简单来说:

  • 通用配置:写在 /etc/login.conf ,写完了执行 cap_mkdb /etc/login.conf 应用修改。
  • 服务环境变量:写在 /etc/rc.conf 以及 rc.d 脚本。
  • 个人偏好配置:这时候才在 .profile , .bashrc 里面定义,但要明确这仅限于你个人手动登录时生效。不建议把服务器用的长期稳定设置放在这里。

如果你的代理是常态的,例如公司或学校网络环境,整个局域网必须通过网关代理才能上网,最好写在 login.conf 中,此时它更像是基础设施,如果写在 .bashrc 里面,只有交互式的程序才会使用代理,各种 Daemon (守护进程)、 cron 系统自带的定时任务,都会集体断网。

1. 全局配置(对所有的用户生效)

打开系统登录类配置文件

sh 复制代码
ee /etc/login.conf

找到 default:\ 部分,在 setenv 字段中添加代理信息,注意各变量间用逗号分隔,示例的代理服务器地址仅供参考,请根据实际情况修改。

sh 复制代码
default:\
    :setenv=http_proxy=http://127.0.0.1:7890,https_proxy=http://127.0.0.1:7890,no_proxy=localhost|127.0.0.1:\
    :path=/sbin /bin /usr/sbin /usr/bin /usr/local/sbin /usr/local/bin ~/bin:\
    ...

2. 个人配置

此设置仅对当前用户生效,编辑个人目录下的配置文件:

sh 复制代码
ee ~/.login_conf

修改如下配置,如果没有此文件请自行创建,如果文件中没有这个配置则直接写入如下配置:

sh 复制代码
me:\
  :setenv=http_proxy=http://127.0.0.1:7890,https_proxy=http://127.0.0.1:7890:

doas reboot 重新启动以后,检查环境变量是否已由系统注入

sh 复制代码
printenv | grep -i proxy

如果能看到合理的输出,说明代理已在系统中生效,无需再为每个 Shell 单独配置。

END~

相关推荐
运维行者_14 分钟前
网络性能监控怎么做?从自动发现到根因分析的4个环节
运维·服务器·网络·人工智能·支持向量机
此时不提桶,更待何时1 小时前
06-14-A-Kafka集群运维与迁移实战详解
运维·kafka
广州浮点FLOATLIC2 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
IT研究所3 小时前
AI-ITR平台如何减少客户问题反复升级?
大数据·运维·人工智能·低代码·自然语言处理·安全架构·企微
BLUcoding3 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom
AIgorithmGEEK3 小时前
[Linux]从手写报头到内核套路:序列化、反序列化与自定义协议全链路
linux·运维·服务器·网络·序列化·反序列化
Nil2083 小时前
leetcode 139单词拆分
linux·运维·服务器
Starry-sky(jing)3 小时前
BUG: unable to handle kernel paging request 完整排查:dmesg 四要素与三路定罪
linux·运维·服务器·内核·排障
mounter6253 小时前
从硬件互连到操作系统变革:CXL 技术演进与 Linux 内核工程挑战
linux·运维·服务器
zhengqweasd3 小时前
机房托管服务器怎么选硬盘,机械盘和 SSD 托管场景差异
运维·服务器·github