Fish Shellは、タブが完了すると「数学:エラー:演算子が見つかりません」を報告します。

Fish Shellは、タブが完了すると「数学:エラー:演算子が見つかりません」を報告します。

今朝このエラーを見つけましたが、昨夜何も変更していないようで、今混乱しています。おそらく、システムのいくつかのユーティリティを更新しましたが、以前のバージョンとの互換性が壊れている可能性があります。デフォルトでmath: Error: Missing operatorは、タブ補完を使用するとエラーが発生します。

fish私が入力してクリックして次の提案を受けたとしましょうTab。 (ここにasciinemaが実際に働くことを見たいと思う場合のためのスクリーンキャストがあります。fish_configfish_add_pathhttps://asciinema.org/a/L3xr32eVMGHuCY0Gjr19gFzCu)

[I] ~ $ fishmath: Error: Missing operator
'Wed Dec 31 18:00:00 CST 1969 - 1655913830'
 ^
[I] ~ $ fish_config
fish                                                                               (command)
fish_add_path
fish_breakpoint_prompt
fish_clipboard_copy
…and 29 more rows

タブの完成はうまくいきますが、エラーは面倒です。データ文字列などを評価したいようです。エラーを診断する方法は?


私はmacOS Montereyを使用しています。これは私のものです~/.config/fish/config.fish

set -px PATH /opt/local/bin /opt/local/sbin
set -px PATH $HOME/.local/bin
set -px PATH $HOME/bin
set -px PATH /Applications/MacPorts/Alacritty.app/Contents/MacOS
set -px PATH $HOME/Foreign/drawterm
set -px PATH $HOME/google-cloud-sdk/bin

set -x XDG_CONFIG_HOME $HOME/.config
set -x PIPENV_VENV_IN_PROJECT 1
set -x PLAN9 /usr/local/plan9

set -px PATH $PLAN9/bin

if test -e $HOME/.config/fish/sensitive.fish
    source $HOME/.config/fish/sensitive.fish
end

if status is-interactive
    # Commands to run in interactive sessions can go here
    alias vi='/opt/local/bin/nvim'
    set -gx EDITOR /opt/local/bin/nvim
    source /opt/local/share/fzf/shell/key-bindings.fish
end

set -g fish_key_bindings fish_hybrid_key_bindings

alias matlab='/Applications/MATLAB_R2021b.app/bin/matlab -nodisplay'

zoxide init fish | source

direnv hook fish | source

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/Users/qys/google-cloud-sdk/path.fish.inc' ]; . '/Users/qys/google-cloud-sdk/path.fish.inc'; end

答え1

その行を削除した後、エラーは消えましたset -px PATH $PLAN9/bin。誤って一部のシステムユーティリティをそのシステムユーティリティに隠してしまったためです。ユーザースペースの計画9

別の解決策はを使用することですset -ax PATH $PLAN9/bin。を使用すると-aディレクトリが$PLAN9/bin追加されるので、$PATH使用時に前に追加されるのとは対照的に、計画9にすでに-p存在するコマンドは計画9のコマンドよりも優先されます。$PATH

答え2

ここで何が起こるのかは、魚がコマンドを完了しようとし、apropos次を呼び出してコマンドに説明を追加しようとしていることです。

macOSでは、AppleのサンドボックスがWhatisデータベースを破損するため、非常に遅くなります。

したがって、フィッシュは毎週更新される独自のキャッシュを追加します。

その日を確認するため、それは働く:

set age (math (date +%s) - (/usr/bin/stat -f %m $whatis))

UNIX時代を取得するには、dateフォーマット指定子を指定してください。+%s

あなたはdateそれを(典型的な)超ミニマリズムに置き換えました。プラン9バージョン、型引数を受け入れないため、最終的に日付全体を印刷することになり、数学式の型が正しくありません。

一般的に、フィッシュはかなり標準的なUnixユーザースペースを想定しているので、前にPlan 9ツールを追加するのは悪い考えです。

関連情報