如何在 Unix 系统上更改全局登录 shell?

如何在 Unix 系统上更改全局登录 shell?

我想要设置所有现有和未来用户的登录 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.

相关内容