非登录 shell 出现问题

非登录 shell 出现问题

通常我的终端提示是

username place$

现在它只显示

bash-4.2$

并且所有颜色设置都已丢失(在终端配置文件上我有相同的配色方案,但它只是不显示颜色)

我不知道发生了什么(并且我不知道如何搜索这个)。

它从无到有改变,我正在使用 eclipse 和 maven,打开一个新终端,但新终端没有颜色。

注意:我没有 ~/.bashrc 文件,但有 ~/.bash_profile。

答案1

提示变量可能未设置,因此使用$PS1内置默认值。\s-\v\$

当 bash 以交互方式启动时,它会获取一个配置文件,通常是~/.bashrc~/.bash_profile,假设它们存在,这就是设置更高级的提示符的方式。从man bash

召唤

[...] 当 bash 作为交互式登录 shell 或带有 --login 选项的非交互式 shell 被调用时,它首先从文件 /etc/profile 中读取并执行命令(如果该文件存在)。读取该文件后,它会查找〜/ .bash_profile,〜/ .bash_login,〜/.profile,以该顺序 [...]

[...] 当启动非登录 shell 的交互式 shell 时,bash 会读取并执行以下命令 〜/ .bashrc,如果该文件存在。

没有设置提示符可能会在两种不同的上下文中发生:登录 shell 和非登录 shell。如果您使用显示管理器直接登录 GUI,则不会遇到登录 shell,除非切换到虚拟控制台(例如通过CtrlAlt+ F1 到 F6)。但是,您可以通过显式打开一个新的登录 shell 在 GUI 中测试您的 bash 登录配置文件:bash -l

非登录 shell 出现问题

如果问题发生在普通 GUI 终端等情况下,则可能是您的~/.bashrc文件丢失,或者已被编辑以排除全局文件的来源,可能是/etc/bashrc.

  • 如果~/.bashrc不存在,则应该有一个/etc/skel/.bashrc用于为新用户创建它。只需将该文件复制到您的主目录中,您打开的下一个新 shell 就会出现默认提示。

  • 如果~/.bashrc存在,请检查某处是否有一行来源/etc/bashrc

    . /etc/bashrc
      -OR-
    source /etc/bashrc
    

    如果不存在,请检查该文件是否存在(至少在大多数 Linux 发行版上应该存在)并将这样一行添加到您的~/.bashrc.

登录 shell 出现问题

如果登录 shell 和非登录 shell 均出现此问题,则问题可能与上述相同。如果发生仅有的对于登录 shell,您要么没有上面引用引用中提到的登录 shell 的文件之一,要么它们没有获取您的~/.bashrc,这在大多数 Linux 发行版上是正常的。如果这些文件都不存在,请~/.bash_profile在其中创建:

if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

在大多数情况下,这允许您将配置保存在一个文件中 ( ~/.bashrc)。


如果无论你做什么都无法得到提示,你可以创建一个提示并将其放入~/.bashrc以下方式:

if [ "$PS1 ]; then
    PS1= .... # see below
fi

这是因为 $PS1 已设置并且具有交互式 shell 的默认值,并且您不想以其他方式设置它,因为其他事物可能会使用此值来确定这是否是交互式环境。

bash 手册页包含一个 PROMPTING 部分,它描述了如何使用动态功能(例如用户名和当前工作目录)设置提示,例如:

PS1="\u \w:"

有一个指南在这里使用颜色。请注意,您应该将非打印字符括在\[和中\](在有关颜色的答案末尾对此进行了讨论)。

答案2

只需将其作为受影响用户的 root 粘贴到 ~/.bashrc 和 ~/.bash_profile 中即可。

# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi

答案3

出于安全原因不得不升级 Cygwin bash。

旧的 bash = 4.1.10(4)-release (i686-pc-cygwin) 大约 2009 年

$ echo $PS1

\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$

新的 bash = 4.4.12(3)-release (i686-pc-cygwin) 大约 2016 年

为了获得完全相同的外观和感觉必须添加.bashrc

#

GREEN="\[$(tput setaf 2)\]"

YELLOW="\[$(tput setaf 3)\]"

RESET="\[$(tput sgr0)\]"

PS1="\n${GREEN}\u@\h ${YELLOW}\w${RESET}\n$ "

cd $HOME

#

注:包括cd $HOME

答案4

当我们的 DBA 尝试为数据库安装创建 oracle 用户时,我遇到了同样的问题。他没有更改条目,而是删除了用户的一些配置文件所需的文件。

我通过从没有遇到问题的其他用户复制以下默认文件来解决:

  1. /home/username/.bashrc
  2. /home/username/.bashrc_profile
  3. /home/username/.bashrc_logout
  4. /home/username/.bashrc_history

无需更改这些文件中的任何设置/文本。

注销会话并重新登录。您应该使用颜色和登录提示恢复默认 shell(通常是 bash)。

相关内容