我有一组环境变量,我想在每次启动时自动加载它。截至目前,我正在做以下工作:
In/etc/environment
export FLEETCTL_TUNNEL=10.77.189.179
在~/.bashrc 中
source /etc/environment
但理论上,导出命令如果放在~/.bashrc中,应该正常工作吗?
有没有一种更可取的方法?
你是对的。放置在/etc/profile
、~/.bash_profile
、~/.bashrc
和&/etc/environment
应该全部被读取(但是将由不同的组件读取)。从技术上讲,/etc/environment
不符合POSIX(这只意味着它不能在所有POSIX系统上工作)。此外,需要提供给各个服务的环境变量可以添加到系统服务单元中,如人工系统服务中所述
这在实践中的一个例子是蚀刻:
core@littleguy ~ $ systemctl cat etcd.service
# /usr/lib64/systemd/system/etcd.service
[Unit]
Description=etcd
[Service]
User=etcd
PermissionsStartOnly=true
Environment=ETCD_DATA_DIR=/var/lib/etcd
Environment=ETCD_NAME=%m
ExecStart=/usr/bin/etcd
Restart=always
RestartSec=10s
在这种情况下,您可以看到值ETCD_DATA_DIR
被设置为"/var/lib/ecd",值ETCD_NAME
被设置为该主机的机器ID(从/etc/machine-id
-"427483172c674b648b24f44bd133aeb7"读取)