.zshrc
当用户主目录中没有文件并zsh
启动时,将运行交互式配置实用程序,而不是直接授予对 shell 提示符的访问权限。
我设置zsh
为 Debian Wheezy 系统上的默认 shell。因此zsh
,如果我不手动更改它,每个新创建的用户都会获得登录 shell。.zshrc
中也有一个默认值/etc/skel
,因此我系统上的所有常规用户在其主目录中都有该文件的副本。对于系统用户来说情况并非如此。
sudo
当我现在通过或更改为系统用户(例如特定网络守护程序的用户)时,我会遇到配置工具,因为这些用户的主目录中sh
没有。.zshrc
将 a 放入每个守护进程的主目录中感觉不太合适.zshrc
,这在许多系统上设置和维护也会很痛苦。但我仍然不想降级到bash
对这些用户来说不太舒服的版本。
有没有办法禁用配置工具而不必在用户主目录中zsh
创建文件?此外,对于所有没有文件的用户,.zshrc
将单个文件设置为系统范围默认值的方法也很好。.zshrc
答案1
从:http://www.zsh.org/mla/users/2007/msg00398.html
The shell then executes code in the file
scripts/newuser in the shared library area (by default
/usr/local/share/zsh/<VERSION>/scripts/newuser). This feature can be
turned off simply by removing this script. The module can be removed
entirely from the configured shell by editing the line starting
"name=zsh/newuser" in the config.modules file, which is generated in the
top level distribution directory during configuration: change the line to
include "link=no auto=no".
并且由每个设置了、、 &选项/etc/zsh/zshrc
的 shell 获取。 (大多数交互式 zsh 进程都会这样做)interactive
rcs
globalrc
或添加zsh-newuser-install() { :; }
其中/etc/zsh/zshenv
具有明显的副作用,即用户在取消定义您的功能之前无法使用该功能。
您可以通过添加 UID 测试来优化它。
if (( EUID < 1000 )) && (( EUID != 0 )); then # or whatever the highest daemon uid on your system
zsh-newuser-install() { :; }
fi