我是Fish的首次用户,因此我尝试将Bash提示符(PS1
)转换为fish_prompt
,并将其保存到~/.config/fish/functions/fish_prompt.fish
。
这是与this类似的问题,但是,该解决方案不适用于我。
我尝试删除[]
,使用test
,但是,我不知道如何在Fish中比较字符串
if [ $prompt_hostname == 'remote-host' ]
set userHost remote
else
set userHost local
end
答案 0 :(得分:3)
您需要引用该变量,并将==
替换为=
(因为前者是bashism)。
问题在于,就像在bash中一样,空变量在到达命令之前已被删除,因此[
(这只是test
的另一个名称)的参数如下: / p>
[ == 'remote-host' ]
这不是有效的表达式。
所以,这应该是
if [ "$prompt_hostname" = 'remote-host' ]
或
if test "$prompt_hostname" = remote-host
(请注意,引用文字字符串是不必要的,但在两者中均无害-不会对其进行任何更改,因为该字符串不包含任何将被扩展的部分-否$
,no *
,no { {1}},....)