【问题标题】:I can't get colors in my shell prompt (iTerm)我无法在我的 shell 提示符(iTerm)中获得颜色
【发布时间】:2017-11-02 22:13:39
【问题描述】:

我在 Mac OS X 上使用 iTerm 运行 Bash,但由于某种原因,我似乎无法自定义提示中的颜色。我正在编辑我的.bashrc,这就是我目前的内容:

ls --color=always
export LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33'
PS1='\e[33;1m\u@\h: \e[31m\W\e[0m\$ '


export TERM=xterm-color
export GREP_OPTIONS='--color=auto' GREP_COLOR='1;32'
export CLICOLOR=1
export LSCOLORS=ExFxCxDxBxegedabagacad

export COLOR_NC='\e[0m' # No Color
export COLOR_WHITE='\e[1;37m'
export COLOR_BLACK='\e[0;30m'
export COLOR_BLUE='\e[0;34m'
export COLOR_LIGHT_BLUE='\e[1;34m'
export COLOR_GREEN='\e[0;32m'
export COLOR_LIGHT_GREEN='\e[1;32m'
export COLOR_CYAN='\e[0;36m'
export COLOR_LIGHT_CYAN='\e[1;36m'
export COLOR_RED='\e[0;31m'
export COLOR_LIGHT_RED='\e[1;31m'
export COLOR_PURPLE='\e[0;35m'
export COLOR_LIGHT_PURPLE='\e[1;35m'
export COLOR_BROWN='\e[0;33m'
export COLOR_YELLOW='\e[1;33m'
export COLOR_GRAY='\e[0;30m'
export COLOR_LIGHT_GRAY='\e[0;37m'

理论上至少应该做点什么。有谁知道为什么我无法让这些颜色出现(即使在退出和重新加载之后)?

【问题讨论】:

  • 你确定每次编辑它都会重新加载 .bashrc 吗?试试source ~/.bashrc

标签: bash macos shell terminal


【解决方案1】:

在 OSX 10.11.x bash 和终端中,使用 PS1 提示编码等访问的文件是 .bash_profile,而不是 .bashrc。这可能是 iTerm 问题的根源吗?

当我自定义提示时,我编辑的是 .bash_profile。

但请注意 – user1934428 的评论

如果我没记错的话,你可以在iTerm中配置,执行什么shell,如何执行,所以没有通用的规则。由于交互式登录 shell 和交互式非登录 shell 存在差异,通常的做法是将所有有意义的命令仅放在交互式 shell 中,既不放在 .bashrc 也不放在 .bash_profile 中,而是放在单独的文件中,它来自 .bashrc 和 .bash_profile。另一种选择是将其放入 .bashrc 并从 .bash_profile 获取 .bashrc。

您可能还想在 PS1 中的非打印字符周围放置一些反斜杠方括号,以避免终端和 iTerm 中的不良换行。见 https://stackoverflow.com/questions/11831296/os-x-terminal-text-stacking-on-top-of-itself.

【讨论】:

  • 这取决于如何调用 bash。来自 bash 手册页: 当一个不是登录 shell 的交互式 shell 启动时,如果该文件存在,bash 将从 ~/.bashrc 读取并执行命令。这可以通过使用 --norc 选项来禁止。 --rcfile 文件选项将强制 bash 从文件而不是 ~/.bashrc 读取和执行命令。
  • 好的,谢谢@user1934428,学习新东西。那么如果他/她使用 iTerm 会是这种情况吗?如果是这样,这意味着我的答案没有帮助或最佳答案。等待看看是否有人提供了更好的答案。
  • 现在我这里没有Mac,但是如果我没记错的话,你可以在iTerm中配置,什么 shell执行,如何 它被执行,所以没有一般​​规则。由于交互式登录 shell 和交互式非登录 shell 存在差异,通常的做法是将所有有意义的命令仅放在交互式 shell 中,既不放在 .bashrc 也不放在 .bash_profile 中,而是放在单独的文件中,它来自 .bashrc 和 .bash_profile。另一种选择是将其放入 .bashrc 并从 .bash_profile 获取 .bashrc。
  • 将等待 OP 从您的优秀 cmets 中寻找解决方案。然后你或他变成一个张贴的答案。
  • @user1934428 我已将您的 cmets 纳入我的回答中,并感谢您。谢谢。
【解决方案2】:

您的终端可能正在从不同的文件加载其配置,可能是默认的 .bashrc,我相信它位于 /etc 中。终端也可能根本没有使用 .bashrc,而是使用 .Xresources 或 .Xdefaults。

【讨论】:

  • 配置由 shell 加载,而不是终端。 .Xresources.Xdefaults是X11配置文件,不影响shell,当然也不影响原生macOS应用。
  • @Dumbassahedratron 是的,没问题。我学到了一些东西。所有的帮助。
猜你喜欢
  • 2014-11-07
  • 2014-04-24
  • 2020-08-05
  • 1970-01-01
  • 2016-10-19
  • 1970-01-01
  • 2017-05-15
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多