当我打开图形终端时,.bashrc 或 .profile 均未被获取

当我打开图形终端时,.bashrc 或 .profile 均未被获取

我一直在为远程服务器上的项目设置用户。当我通过 x2go 登录并打开终端时,似乎没有运行.bashrc或。该文件有一行包含。.profile.profilesource .bashrc

但是,打开终端后,如果我明确登录用户,则su userName文件.bashrc会运行,我可以使用我的环境。终端行看起来不像sh-4.3$userName$习惯的那样。有什么想法吗?或者我该如何解决这个问题?

答案1

问题在于,用户帐户配置的登录 shell 不是bash,因此它不会自动读取并运行来自文件使用的命令。具体来说,没有配置登录 shell,因此使用了bash默认的:/bin/sh

好的,那么您究竟是如何创建用户的?看起来好像没有为他们定义登录 shell(可能将终端默认为/bin/sh?)

钢铁司机 2天前

由于这是无意的,解决方案是由...提供钢铁司机一条评论,是将 shell 更改bashchsh

chsh使用设置所需的 shell会更安全。顺便问一下,远程服务器运行的是哪个版本的 Ubuntu?

钢铁司机 2天前

系统结果是运行 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/shellscat /etc/shells

有关不同 shell 如何使用不同启动文件的详细信息,请参阅在哪里定义别名:.cshrc 还是 .bashrc?

相关内容