如何在不重新启动的情况下重新加载/ etc / environment?

药草素恢复莫妮卡

/etc/environment正式对全系统的环境变量的正确位置。但是,如何在不重新启动或重新记录的情况下重新加载此文件中的作业?

有趣的是,除了数十篇建议使用的博客文章外,谷歌对我没有帮助

source /etc/environment

这显然行不通的,因为它/etc/environment是一份配置列表(每行一个),而不是可执行脚本(因此...中缺少的export命令/etc/environment)。

用户名

您误会的一件事是/etc/environment需要重新启动才能重新加载。这是不正确的。激活PAM堆栈时,特别读取文件时,只有在登录时才pam_env.so读取文件。

注销并重新登录将应用更改–实际上,如果希望所有进程都接收新环境,则必须执行此操作所有其他“解决方案” 2只会将环境应用于单个shell进程,而不应用于您通过GUI启动的任何程序,包括新的终端窗口。1个

不过,如果您对此感到满意,export可以使用set -a来弥补命令的不足set +a但是,它仍然是一种糟糕的方法,因为该文件也不使用引号。但这应该可以正常工作:

while read -r env; do export "$env"; done

1 GNOME会话管理器提供了一种更改其自身环境的方法,但仅在此Initialization阶段可以:

$ gdbus call -e -d org.gnome.SessionManager \
                -o /org/gnome/SessionManager \
                -m org.gnome.SessionManager.Setenv \
                "FOO" "bar"
Error: GDBus.Error:org.gnome.SessionManager.NotInInitialization: Setenv
    interface is only available during the Initialization phase

2 gdb不是解决方案,但有时可以使用。您必须将其附加到会话管理器(例如gnome-session),窗口管理器(例如gnome-shellopenbox),任务栏/面板(如果有的话)(例如xfce4-panel)以及通常可能运行内容的其他任何东西的运行进程中对于每个进程,您都需要gdb通过PID对其进行附加putenv()使用调用该函数p,然后使用进行分离q

$ sudo gdb -p $(pidof gnome-session)
GNU gdb (GDB) 7.7.1
[...]
Attaching to process 718
[...]
0x00007fc2cefed81d in poll () from /usr/lib/libc.so.6

(gdb) p putenv("FOO=bar")
$1 = 0

(gdb) p putenv("BAZ=qux")
$2 = 0

(gdb) q
A debugging session is active.
Quit anyway? (y or n) y
Detaching from program: /usr/bin/gnome-session, process 718

请注意,调试器会暂停该过程,因此,您必须仅从另一个tty(虚拟控制台)或通过SSH附加到合成窗口管理器,否则屏幕将冻结。

除此之外,您还应该更新dbus-daemon使用的环境:

$ dbus-update-activation-environment --systemd FOO=bar BAZ=qux

对于较旧的系统:

$ gdbus call -e -d org.freedesktop.DBus \
                -o /org/freedesktop/DBus \
                -m org.freedesktop.DBus.UpdateActivationEnvironment \
                "{'FOO': 'bar', 'BAZ': 'qux'}"
()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不重新登录的情况下从/ etc / environment重新加载变量?

来自分类Dev

如何在不重新登录的情况下从/ etc / environment重新加载变量?

来自分类Dev

如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

来自分类Dev

如何在不重新启动vim的情况下重新加载.vimrc文件?

来自分类Dev

如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

来自分类Dev

如何在不重新启动的情况下重新加载udev规则?

来自分类Dev

/ etc / environment更改在Ubuntu 16.04中立即重新加载,但在14.04中不重新加载

来自分类Dev

如何在不重新启动应用程序的情况下重新配置Serilog?

来自分类Dev

如何在不重新启动MATLAB的情况下重新编译模型DLL?

来自分类Dev

Jrebel / SBT如何在不重新启动的情况下重新编译Webapp

来自分类Dev

如何在不重新启动的情况下强行重新安装设备?

来自分类Dev

如何在不重新启动整个容器的情况下重新启动Docker容器上的Node?

来自分类Dev

重新启动Android SystemUIService后,如何在不重新启动的情况下刷新墙纸图像?

来自分类Dev

如何在不重新启动的情况下启动Cron作业?

来自分类Dev

如何通过bash脚本修改/ etc / environment

来自分类Dev

如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

来自分类Dev

如何在不重新启动活动的情况下切换主题(夜间模式)?

来自分类Dev

如何在不重新启动cassandra节点的情况下重建sstable?

来自分类Dev

Kubernetes:如何在不重新启动Pod的情况下更新Pod的资源限制/请求?

来自分类Dev

如何在不重新启动nvim的情况下获取neovim配置文件?

来自分类Dev

如何在不重新启动应用程序的情况下获取StackOverflowError的完整stacktrace

来自分类Dev

如何在不重新启动的情况下使用SEE_MASK_NOZONECHECKS运行MSI

来自分类Dev

如何在不重新启动的情况下检测连接的新硬盘?

来自分类Dev

如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

来自分类Dev

如何在不重新启动的情况下查看ubuntu中的grub内核

来自分类Dev

如何在不重新启动(kpartx)的情况下使用新的fdisk表?

来自分类Dev

如何在不重新启动的情况下卸载Process Monitor驱动程序?

来自分类Dev

如何在清除后不重新启动Nginx的情况下恢复Nginx缓存

来自分类Dev

如何在不重新启动Windows的情况下清除屏幕瑕疵(多个版本)

Related 相关文章

  1. 1

    如何在不重新登录的情况下从/ etc / environment重新加载变量?

  2. 2

    如何在不重新登录的情况下从/ etc / environment重新加载变量?

  3. 3

    如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

  4. 4

    如何在不重新启动vim的情况下重新加载.vimrc文件?

  5. 5

    如何在不重新加载或重新启动Nginx的情况下进行Nginx配置更新

  6. 6

    如何在不重新启动的情况下重新加载udev规则?

  7. 7

    / etc / environment更改在Ubuntu 16.04中立即重新加载,但在14.04中不重新加载

  8. 8

    如何在不重新启动应用程序的情况下重新配置Serilog?

  9. 9

    如何在不重新启动MATLAB的情况下重新编译模型DLL?

  10. 10

    Jrebel / SBT如何在不重新启动的情况下重新编译Webapp

  11. 11

    如何在不重新启动的情况下强行重新安装设备?

  12. 12

    如何在不重新启动整个容器的情况下重新启动Docker容器上的Node?

  13. 13

    重新启动Android SystemUIService后,如何在不重新启动的情况下刷新墙纸图像?

  14. 14

    如何在不重新启动的情况下启动Cron作业?

  15. 15

    如何通过bash脚本修改/ etc / environment

  16. 16

    如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

  17. 17

    如何在不重新启动活动的情况下切换主题(夜间模式)?

  18. 18

    如何在不重新启动cassandra节点的情况下重建sstable?

  19. 19

    Kubernetes:如何在不重新启动Pod的情况下更新Pod的资源限制/请求?

  20. 20

    如何在不重新启动nvim的情况下获取neovim配置文件?

  21. 21

    如何在不重新启动应用程序的情况下获取StackOverflowError的完整stacktrace

  22. 22

    如何在不重新启动的情况下使用SEE_MASK_NOZONECHECKS运行MSI

  23. 23

    如何在不重新启动的情况下检测连接的新硬盘?

  24. 24

    如何在不重新启动Pulseaudio的情况下显示正确的Pulseaudio配置文件?

  25. 25

    如何在不重新启动的情况下查看ubuntu中的grub内核

  26. 26

    如何在不重新启动(kpartx)的情况下使用新的fdisk表?

  27. 27

    如何在不重新启动的情况下卸载Process Monitor驱动程序?

  28. 28

    如何在清除后不重新启动Nginx的情况下恢复Nginx缓存

  29. 29

    如何在不重新启动Windows的情况下清除屏幕瑕疵(多个版本)

热门标签

归档