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~

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao2 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式