我正在使用命令切换用户:
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
,但在我看来,最好学习使用-m
always 以避免受到不同安装和发行版的影响。
根据上面的评论,可以使用-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 类型,他会没事的。