答案1
您已标记了您的问题adduser
,但您似乎实际上正在使用useradd
:据我所知useradd
(不像adduser
)不会从/etc/skel
目录中复制骨架文件 - 特别是,它不会为新用户创建默认的 ~/.bashrc。
逐一回答您的问题:
它是默认的 bash shell 提示符,在没有更定制的提示符(通常由用户的
~/.bashrc
文件提供)的情况下使用因为你没有为你创建主目录
user11
(也没有useradd
为usermod -d
你做这件事)要么将默认文件复制
.profile
到.bashrc
用户/etc/skel
的主目录中,要么删除用户并重新开始使用adduser
答案2
关于您的问题……
- '-bash-4.3' 的含义是什么以及为什么会发生这种情况?
它是所使用的 shell 及其版本。
- 为什么 user11 打印其工作目录“/root”而 user12 打印“/phome/user12”?
/phome/user11
因为用户 11在文件系统中没有主目录 ( )。
- 我怎样才能将“-bash-4.3”改为其通常含义(如 user11 或 user12)?
/phome/user11
按照 的指定创建一个主目录getent
。
您所做的只是改变了查找用户主目录的位置信息,但没有创建用户主目录。
创建新的主目录user11
cp -a /etc/skel /phome/user11
chown -R user11:1009 /phome/user11
最好的方法是useradd ... -m
自动创建用户主目录。
答案3
依次解决你的每个观点:
-bash-4.3
是 shell 的默认提示符,即 bash。它显示 shell 及其版本。提示符由环境变量设置PS1
。请参阅Bash/Prompt 自定义。user11
$PS1
与 user12的值不同。您可以通过echo $PS1
为每个用户输入内容来验证这一点。在中
~/.bashrc
,对于 user12,添加以下行:export PS1="${PWD}> "
PS1 在哪里设置
此环境变量的值可以在多个位置设置。最常见的位置是/etc/profile
、/etc/bashrc
、~/.bash_profile
和~/.bashrc
。
约翰·库尔斯塔姆([电子邮件保护])写道:
字符串
PS1
应该在 中设置.bashrc
。这是因为非交互式 bash 会特意取消设置PS1
。bash 手册页告诉我们, 的存在与否PS1
是了解一个人是处于交互式还是非交互式(即脚本)bash 会话的好方法。我意识到这是
startx
一个 bash 脚本。这意味着,startx
将消除你的提示。当你设置PS1
(.profile
或.bash_profile
),在控制台登录,通过启动 X 时startx
,你的PS1
进程会被核爆,只剩下默认提示。一种解决方法是启动
xterm
s 和rxvt
s 并-ls
强制它们读取.profile
,但任何时候通过非交互式 shell 脚本调用 shell 时,中间人PS1
都会丢失。system(3)
使用sh -c
,如果 sh 是bash
. 将杀死PS1
。更好的方法是将PS1
定义放在 中.bashrc
。每次 bash 启动时都会读取它,并且交互式事物 - 例如PS1
应该放在这里。因此需要强调的是,
PS1=..blah..
应该在.bashrc
,而不是.profile
。
bash 提示符是一个广泛的主题,太宽泛了,无法在这里全面讨论。有关进一步的 bash 提示符自定义,请参阅Bash 提示符操作指南。