我一直在为远程服务器上的项目设置用户。当我通过 x2go 登录并打开终端时,似乎没有运行.bashrc
或。该文件有一行包含。.profile
.profile
source .bashrc
但是,打开终端后,如果我明确登录用户,则su userName
文件.bashrc
会运行,我可以使用我的环境。终端行看起来不像sh-4.3$
我userName$
习惯的那样。有什么想法吗?或者我该如何解决这个问题?
答案1
问题在于,用户帐户配置的登录 shell 不是bash
,因此它不会自动读取并运行来自文件使用的命令。具体来说,没有配置登录 shell,因此使用了bash
默认的:/bin/sh
好的,那么您究竟是如何创建用户的?看起来好像没有为他们定义登录 shell(可能将终端默认为
/bin/sh
?)
由于这是无意的,解决方案是由...提供钢铁司机在一条评论,是将 shell 更改bash
为chsh
:
chsh
使用设置所需的 shell会更安全。顺便问一下,远程服务器运行的是哪个版本的 Ubuntu?
系统结果是运行 Ubuntu 16.04,和其他 Ubuntu 版本一样,bash
可用。
使用的方法之一是chsh
命令如下,输入所需登录 shell 的完整路径来代替shell
:
chsh -s shell
因此,要将某人的 shell 改为(或改回)bash
:
chsh -s /bin/bash
另一种方法是chsh
不带参数运行,在这种情况下它以交互方式运行,用户必须输入所需 shell 的名称,或者只需按Enter默认值即可。
在两种用法中,chsh
在继续之前都会提示输入用户的密码。这是用户自己的密码(无论用户是否能够以 root 身份运行命令sudo
)。例如,在交互式用法中:
ek@Kip:~$ chsh
Password:
Changing the login shell for ek
Enter the new value, or press ENTER for the default
Login Shell [/bin/bash]:
如果你看到这个,说明密码输入错误:
chsh: PAM: Authentication failure
应以绝对路径提供 shell(以 开头)。只能选择/
文件列出的 shell 。显示该文件内容的一种方法是运行。其内容取决于已安装的 shell(也可能由系统管理员手动修改)。/etc/shells
cat /etc/shells
有关不同 shell 如何使用不同启动文件的详细信息,请参阅在哪里定义别名:.cshrc 还是 .bashrc?