我尝试按照此处的步骤配置提示:https://nixos.wiki/wiki/Fish
与此处有关基本文件的位置和内容的信息组合:https://fishshell.com/docs/current/faq.html#how-do-i-set-my-prompt
如果我理解正确,fish_prompt.fish
的内容应为:
set -l nix_shell_info (
if test -n "$IN_NIX_SHELL"
echo -n "<nix-shell> "
end
)
function fish_prompt
set_color $fish_color_cwd
echo -n (prompt_pwd)
set_color normal
echo -n -s ' $nix_shell_info ~>'
end
以这种方式设置后,无论是否在nix-shell
中,提示都相同,并且变量$nix_shell_info
未被设置。
如何设置它以使其按预期工作?
您需要在函数内部设置变量,否则它将始终包含加载文件时设置的值:
function fish_prompt
set -l nix_shell_info (
if test -n "$IN_NIX_SHELL"
echo -n "<nix-shell> "
end
)
set_color $fish_color_cwd
echo -n (prompt_pwd)
set_color normal
echo -n -s " $nix_shell_info ~>"
end
Edit:正如cole-h在IRC上指出的那样,您还需要将包含变量的单引号更改为双引号,否则将不会被插值。