在终端上切换用户

在终端上切换用户

我正在使用命令切换用户:

sudo su - userName

在我的终端上我总是有:

user@user directory $ (some command)

但是当我切换用户时我只有:

$ (some commands)

很难解释我的意思,但我是 Linux 新手,我在其他问题中没有发现这一点。重新登录后如何保留 $ 符号之前的整个数据?

编辑:好的,它对我有用,我使用命令重新创建了用户:adduser name

但我还有另一个问题。此命令创建 /home 目录,但它是空的。是否有一些命令可以为新用户初始化/home?

答案1

但我还有另一个问题。此命令创建 /home 目录,但它是空的。是否有一些命令可以为新用户初始化/home?

第二个问题的解决也就解决了第一个问题。您的新用户的主目录中没有所有默认配置文件,因此新 shell 不会显示花哨的提示等...

创建新用户的标准命令使用以下内容初始化其主目录/etc/skel

useradd -m

正如已经指出的,某些发行版的默认值是错误的,因此您可能需要添加更多选项:

useradd -m -s /bin/bash

有关更多详细信息,请使用:

man useradd

有一些特定于发行版的高级工具。在对您的问题的评论中已经提到了在 Debian 等上使用的一个示例:

adduser

另外,/etc 中有一些配置可以使useradd行为为useradd -m,但在我看来,最好学习使用-malways 以避免受到不同安装和发行版的影响。

根据上面的评论,可以使用-D参数设置默认值useradd

useradd -D -s /path/to/default/shell

答案2

您正在切换为普通用户,并且该用户没有 $PS1 设置,但我认为您在基于 Debian 的系统中使用 useradd 命令添加该用户,默认情况下您使用 useradd 的 shell 是 sh ,因此您可以尝试:

chsh -s /bin/bash userName

此命令会将 userName 的 shell 更改为 /bin/bash。然后再尝试为该用户切换。如果您想在使用 useradd 添加某些用户时更改 bash 的默认 shell,您可以更改文件 /etc/default/useradd。

sed -i -e "s@\(^SHELL\).*@\1=/bin/bash@g" /etc/default/useradd

答案3

您正在从一个普通用户(您)切换到另一个普通用户,比如 joe,对吧?
以下是您的 shell 提示符,在环境变量 PS1 中定义:

user@user directory $

切换到 joe 后,您会看到 joe 的 shell 提示符。而且他没有配置在提示中显示任何花哨的内容,因此只显示默认提示,如下所示:

$

第二个是普通 shell 程序的默认值,您的可能是 linux 发行版的默认值。

尝试将 PS1 设置为与您帐户中的相同,它应该会有所帮助:

user@usersBox directory $ 回显“$PS1”

然后

$ PS1=“……”
joe@usersBox directory $

将 ...... 替换为上面显示的值echo

“@”后面的单词通常是计算机的名称,因此我猜您在安装过程中为计算机指定的名称与您的用户名相同。
为了在示例中减少混淆,我将计算机名称更改为“usersBox”。

也许他故意删除了你的变体。但很可能,这是由一些随机的小技术问题引起的,如果你也为他更改它,在他的启动文件中,如 ~/.bashrc 或类似的,这取决于他使用的 shell 类型,他会没事的。

相关内容