我用用于 Shell 的 Base16脚本来更改 shell 的默认 ANSI 颜色。例如:
$ wget https://github.com/chriskempson/base16-shell/raw/master/scripts/base16-nord.sh
$ sh base16-nord.sh
该脚本从此更改终端颜色(我使用 openSUSE Leap 15.1 和 GNOME 3.26.2):
对此:
它不仅适用于 GNOME 终端,还适用于任何虚拟控制台(例如tty1
)。
但我每次启动新的终端窗口/会话时都需要调用它,或者在~/.bashrc
.
问题是:如何广泛应用该颜色主题系统? (以便所有用户应用相同的颜色主题)
大多数页面都解释了如何自定义PS1
或LS_COLORS
,这些不是我想要的。这就是为什么我开始一个新问题。
答案1
我找到了一种在系统范围内(对所有用户)应用相同的 Base16 Shell 主题的方法。但我确实相信有更好的方法可以做到这一点。如有建议,我们将不胜感激。
- 将 Base16 Shell 下载到所有用户均可访问的文件夹(例如
/usr/share/base16-shell/
)
$ sudo git clone https://github.com/chriskempson/base16-shell.git /usr/share/base16-shell/
- 系统范围
~/.bashrc
相当于/etc/bash.bashrc.local
。
/etc/bash.bashrc.local
如有必要,创建该文件。
将以下内容附加到其中:
# Base16 Shell
BASE16_SHELL="/usr/share/base16-shell/"
[ -n "$PS1" ] && \
[ -s "$BASE16_SHELL/profile_helper.sh" ] && \
eval "$("$BASE16_SHELL/profile_helper.sh")"
- 在
/etc/skel
(新用户主页的框架)中,创建一个指向默认应用的主题的符号链接:
$ sudo ln -s /usr/share/base16-shell/scripts/base16-material-darker.sh /etc/skel/.base16_theme
创建一个新用户(在 openSUSE 上,您可以使用YaST 控制中心)
登录新用户并打开 GNOME 终端。您应该看到该主题已应用:
测试使用openSUSE Leap 15.2 Beta GNOME 实时镜像。
笔记:
- 由于我们在 中工作
/etc/skel
,该主题将仅应用于新用户(在该过程之后创建的用户)。现有用户需要调用 Base16 Shell(仅一次)来应用主题。但是,正如我所说,我相信有更好的方法...... - AFAIK
/etc/bash.bashrc.local
适用于所有用户(包括现有用户和新用户),因此 Base16 Shell 实际上会为所有用户进行设置。如果愿意,每个人都可以调用 Base16 Shell 脚本来更改他们的主题。例如:
$ base16_material-lighter
- 我使用 GNOME 终端作为示例,但它也适用于虚拟控制台(例如
tty1
- Ctrl + Alt + F1)。但在虚拟控制台上我观察到一个奇怪的行为:
颜色仅在登录后应用,并且不会全屏应用。
然后我运行:
$ clear
一切看起来都很好:
(对于这个截图,clear
命令没有出现,我ll
又跑了一次)
使用另一个主题使问题更加明显:
然后clear
,然后ll
又: