如何在 gdm 登录时自动为所有用户执行脚本?

如何在 gdm 登录时自动为所有用户执行脚本?

当任何用户通过gdm登录时,我应该修改什么文件来执行一些指令?

我尝试过/etc/bashrc,但仅在启动 bash 时(以及每次打开 xterm 时)执行。我只想在用户登录时执行一次。

我想要做的是每次用户登录时“重置”一些用户首选项(包括窗口管理器),因此脚本应该在WM初始化之前运行。

答案1

似乎最适合我的解决方案是编辑/etc/gdm/PostLogin/Default.这是在用户使用 gdm 登录后立即执行的。正是我想要的。

答案2

在 Debian 及其衍生版本上,您可以修改/etc/profile,但不要认为它是通用的。

答案3

从手册页:

当 bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会按顺序查找 ~/.bash_profile、~/.bash_login 和 ~/.profile,并从第一个存在且可读的文件中读取并执行命令。启动 shell 时可以使用 --noprofile 选项来禁止此行为。

当登录 shell 退出时,bash 会从文件 ~/.bash_logout(如果存在)中读取并执行命令。

当启动非登录 shell 的交互式 shell 时,bash 将从 /etc/bash.bashrc 和 ~/.bashrc 读取并执行命令(如果这些文件存在)。这可以通过使用 --norc 选项来禁止。 --rcfile 文件选项将强制 bash 从文件而不是 /etc/bash.bashrc 和 ~/.bashrc 读取并执行命令。

要更改用户的 WM:卸载 kdm/gdm/xdm/slim,在 ~/.xinitrc 中设置 WM 并从 bash 配置运行“startx”。

相关内容