ssh 登录无法正确解析 .profile 或 .bashrc 并且通常很奇怪

ssh 登录无法正确解析 .profile 或 .bashrc 并且通常很奇怪
  • 首先,它无法加载我的 PS1。它只是提示我$
  • 箭头键不执行其应执行的操作,而只是回显如下内容:$ ^[[A

这使得它非常无法使用。这里需要考虑一些事情:

  • 仅当我通过 ssh 登录时才会发生这种情况,当我直接登录服务器时不会发生这种情况。
  • 其中一位用户即使使用 ssh 也能正常工作;这是在安装操作系统期间设置的用户(ubuntu服务器14.04)。
  • 当我su - otherUser从那个工作正常的用户内部时,一切都工作正常。

这是.bashrc以防万一您想看一下(它对所有用户都相同,包括正常工作的用户):

函数 parse_git_branch () {
  git 分支 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

红色=“\[\033[0;31m\]”
黄色=“\[\033[0;33m\]”
绿色=“\[\033[0;32m\]”
NO_COLOR="\[\033[0m\]"
#PS1="[\u@\h \W]\$"
导出 PS1="[\u@\h $YELLOW\W$NO_COLOR]$GREEN\$(parse_git_branch)$NO_COLOR\$ "

这是当我尝试登录用户时的输出日志作品适当地ssh -vvv ubuntu@serverhttp://paste.ubuntu.com/15436267/

这是当我尝试登录用户时的输出日志不起作用适当地ssh -vvv adam@serverhttp://paste.ubuntu.com/15436301/

答案1

您描述的症状(仅非常基本的提示,箭头键不起作用)与/bin/sh您的登录 shell 一致,而不是/bin/bash预期的那样。/bin/sh是一个小型 shell,旨在快速运行脚本,但不适合交互式使用。

要检查您的登录 shell 是什么,请运行

getent passwd $USER

这将显示以冒号分隔的字段列表,登录 shell 是最后一个。

如果登录 shell 不是您想要的,请运行chsh -s /bin/bash

您在终端中获得 bash 的原因可能是您在配置中的某个位置将SHELL环境变量设置为 bash。终端仿真器通常运行由 指示的程序,如果未设置,SHELL则回退到登录 shell 。SHELL

相关内容