我想fish
使用Web UI模式自定义我的shell,但是在运行时fish_config colors
,显示以下错误。
surface@Surface ~> fish_config starting-colors
Web config started at file:///tmp/web_configoafehdco.html
Hit ENTER to stop.
Start : This command cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start "file:///tmp/web_configoafehdco.html"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommandd
我在 Linux 的 Windows 子系统中运行 Ubuntu
答案1
在浏览了一些文章但没有找到正确答案后,我发现运行时'help'
它会打开浏览器并指向
file://wsl%24/Ubuntu-20.04/usr/share/doc/fish/index.html#variables-for-changing-highlighting-colors
当我们试图奔跑时鱼配置,它指向
"file://wsl%24/Ubuntu/tmp/web_configpo_b9wan.html"
这意味着,我们需要将 wsl%24/Ubuntu 更改为 wsl%24/Ubuntu-20.04。
为此,首先打开 webconfig 目录。
cd /usr/share/fish/tools/web_config
现在,授予 webconfig.py 文件写入权限。
sudo chmod 777 webconfig.py
在 webconfig.py 文件中"file:///" + f.name"
修改以下行:"file://wsl%24/Ubuntu-20.04" + f.name
通过运行将文件的权限更改回其原始状态chmod 644 webconfig.py
你可以走了。
答案2
发生此问题似乎是因为您的 WSL2 发行版可能没有最新版本的fish
.解决方案是修复inwsl
的检测。fish
/usr/share/fish/tools/web_config/webconfig.py
编辑您的/usr/share/fish/tools/web_config/webconfig.py
并将函数更改is_wsl()
为与此相同:
def is_wsl():
""" Return whether we are running under the Windows Subsystem for Linux """
if "linux" in platform.system().lower() and os.access("/proc/version", os.R_OK):
with open("/proc/version", "r") as f:
# Find 'Microsoft' for wsl1 and 'microsoft' for wsl2
if "microsoft" in f.read().lower():
return True
return False
尤其,将“微软”更改为“微软” (大写到小写“m”)
欲了解更多信息,请阅读这个问题在 Fish shell 的 github 存储库中打开。