我想要设置所有现有和未来用户的登录 shell(他们登录时获得的 shell)。
更改登录 shell 的正确方法似乎是chsh
。但这只允许我更改现有用户的 shell。
我可以放入 shell 命令/etc/profile
,但这也远不是一个干净的解决方案。
我正在使用 debian 并想将 zsh 设置为默认 shell。
答案1
取决于您使用什么来添加用户。如果是命令adduser
,则编辑您的/etc/adduser.conf
文件——您将在那里找到默认的登录 shell 选项,即:DSHELL
。
另一方面,如果您更喜欢使用,useradd
则请将其与-s <shell of choice>
参数一起使用。
如果您希望更改现有用户的 shell,只需/etc/passwd
在那里编辑和更改它即可。sed
如果您需要将更改应用于多行,这是一个完美的选择。运行sed 's/bash$/zsh/g' /etc/passwd
并查看它的作用。您应该看到您的内容,/etc/passwd
其中每个内容都bash
被替换为zsh
。如果您对结果满意,您可以使用 -i 选项运行相同的命令:sed -i 's/bash$/zsh/g' /etc/passwd
。不要忘记复制原始文件,以防万一 :)
答案2
我认为您可以通过编辑 /etc/default/useradd 文件并更改行来设置默认值SHELL=
。
答案3
我认为 useradd 可以让你设置这个:useradd -D
When invoked with only the -D option, useradd will display the current
default values. When invoked with -D plus other options, useradd will
update the default values for the specified options. Valid
default-changing options are:
<...snip...>
-s, --shell SHELL
The name of a new user's login shell.
This option sets the SHELL variable in /etc/default/useradd.