![Ubuntu Server 上新创建的用户出现错误的 shell 提示](https://linux22.com/image/141459/Ubuntu%20Server%20%E4%B8%8A%E6%96%B0%E5%88%9B%E5%BB%BA%E7%9A%84%E7%94%A8%E6%88%B7%E5%87%BA%E7%8E%B0%E9%94%99%E8%AF%AF%E7%9A%84%20shell%20%E6%8F%90%E7%A4%BA.png)
我在 Ubuntu 18.04.01 中创建了一个新用户,如下所示:
sudo useradd svn
sudo passwd svn
sudo mkhomedir_helper svn
sudo usermod -d /home/svn -m svn
问题是,如果我切换到用户,su svn
我看不到标准提示命令。而不是标准提示:
svn@svn-server:/srv/svn/$
我只看到:
$
尽管文件的内容/home/svn/.bashrc
。在这个“残缺”提示中,我也无法使用 TAB 键来自动完成路径。
如果我echo $PS1
以svn
用户身份运行,我会得到空结果。
我该如何修复这个用户?
答案1
检查您分配的 shell。如果您useradd
在 Ubuntu 18 中使用该命令,默认的登录 shell 将会是/bin/sh
,您将得到像您提到的那样的输出。您可以通过执行以下命令更改登录 shell:
sudo usermod -s /bin/bash svn
答案2
如果您希望所有新用户使用相同的 shell,您可以使用 进行设置/etc/default/useradd
。更改SHELL
设置以反映您要使用的 shell 二进制文件的路径。例如,我的看起来像:
HOME=/home
SHELL=/bin/zsh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
另外值得注意的是,您可以使用设置中指定的目录SKEL
来定义默认情况下应将哪些文件复制到新用户的主目录中。就我而言,我有一个.zshrc
文件,其中包含我想要为所有新用户提供的 zsh 配置。
使用这两个文件为所有新用户设置默认值。
答案3
您可以以新用户身份更改 shell:
$ chsh 更改 svn 的 shell。 新外壳[/bin/sh]:/bin/bash 密码: **** 外壳变了。
可能还有其他清理工作要做,例如帐户是否缺少部分预期的“骨架”内容。你提到了~/.bashrc
,所以也许这不是问题。