![如何在为 WSLtty 设置 Solarized 主题时修复 bash 语法错误?](https://linux22.com/image/1025643/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%BA%20WSLtty%20%E8%AE%BE%E7%BD%AE%20Solarized%20%E4%B8%BB%E9%A2%98%E6%97%B6%E4%BF%AE%E5%A4%8D%20bash%20%E8%AF%AD%E6%B3%95%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我正在尝试为 WSLtty 终端设置 Solarized 主题,因此我遵循这份两步指南。
我不想安装鱼,所以我只专注于前两个步骤。
但当我跑步时:
eval (dircolors -c ~/.dir_colors | sed 's/>&\/dev\/null$//')
它给了我这个错误:
-bash: syntax error near unexpected token `dircolors'
答案1
我建议你:
按照近 4 年前的指南来设置您的 WSL。WSL 仅有 6 年的历史,在过去几年中发生了很多变化。在此期间,甚至 fish shell 也发生了很大变化(尽管 fish 的变化不是您的问题的一部分)。
尝试“跳过某些步骤”,例如使用 fish shell。该指南显然是针对 fish 编写的,并且正如评论中指出的那样,至少该命令是用 fish 语法编写的,而不是 Bash/POSIX。
在 AskUbuntu.com 上询问有关 WSLtty(一个 Windows 程序)的问题。我们确实认为只要与 Ubuntu 相关,WSL 问题就属于主题,但您会发现这里的 Ubuntu 专业知识比 WSL 多得多,而 WSLtty 上的知识就更少了。
话虽如此,如今 WSLtty 方面的专业知识可能在大多数地方都很短缺。这是 4 年前情况大不相同的另一个副作用。当时,我使用 WSLtty,认为它是 WSL 的最佳终端选项,并且可以提供帮助。
因此,让我提出一些替代方案,因为我无法在 WSLtty 上帮助您(并且很可能 Ask Ubuntu 上也没有人可以为您提供帮助):
首先,虽然 WSLtty 在当时非常棒,但现在 WSL 世界的大部分已经向前迈进了Windows 终端已经存在了几年。Windows Terminal 是:
- 来自 Microsoft
- 开源(Github 仓库)
- 能够在启动时自动检测和配置 WSL(以及 PowerShell、CMD、Git Bash 等)的配置文件
- 积极开发
- 旨在替代旧版 Windows 控制台主机(在 Windows 10 中默认情况下从开始菜单在 WSL 中运行“Ubuntu”时启动的终端)。
- 可配置为 Windows 11 中的默认终端
- 功能丰富:选项卡式、可配置的键绑定,具有内置配色方案(包括阳光照射下的光明与黑暗)等等。
明白最后一部分了吗?Windows Terminal 默认包含 Solarized 主题。您可以通过以下方式轻松切换:
- 更改默认设置外貌所有终端配置文件的设置
- 改变外貌特定配置文件的设置
- 从具有特定配色方案的命令行开始
- Ctrl+ Shift+P调出命令面板,搜索“配色方案”并通过 GUI 选择它。
- 直接创建键绑定以将配色方案切换为您喜欢的配色方案
唯一缺少的似乎是一种从命令行执行此操作的内置方法。当然,可以通过创建一个实用程序来settings.json
直接修改,因为 Windows 终端会自动检测更改。它只是没有内置。
您可能需要也可能不需要该dircolors
方案。首先,请先尝试使用顶级 Solarized 主题。如果您确实想使用该dircolors
配色方案,您可以在该项目的Github 自述文件。看起来简单:
eval `dircolors /path/to/dircolorsdb`
请注意使用反引号进行命令替换不鼓励(礼貌这个答案),因此我建议:
eval $(dircolors /path/to/dircolorsdb)
当然,要调整您要切换的主题的名称。
附注:我自己很喜欢 fish shell,但我建议新手先学习更符合 POSIX 标准的 shell。fish shell 语法是不是符合 POSIX 标准;换句话说,它无法在其他 shell 中运行,并且其他 shell 的标准语法(通常)需要进行调整才能在 fish 中运行。
尽管如此,这种不兼容是有充分理由的。主观上,fish shell 语法是优于(或至少与 POSIX 一样好,在 95% 以上的情况下)——有时很多比。然而,有时缺少鱼类特征会让事情更加困难。
(最终)学习并了解这两者的好处是,bash
当您需要回到“标准”语法时,您始终可以在 fish 内部运行脚本。
换句话说,您现在通过“跳过” fish 可能做了正确的事情,但是当您在 Linux 中感觉更舒服时,请回来检查一下。
附注/建议 #2:查看exa
,是 的现代替代品ls
。默认情况下,它的“颜色”更加丰富。