今朝このエラーを見つけましたが、昨夜何も変更していないようで、今混乱しています。おそらく、システムのいくつかのユーティリティを更新しましたが、以前のバージョンとの互換性が壊れている可能性があります。デフォルトでmath: Error: Missing operator
は、タブ補完を使用するとエラーが発生します。
fish
私が入力してクリックして次の提案を受けたとしましょうTab。 (ここにasciinemaが実際に働くことを見たいと思う場合のためのスクリーンキャストがあります。fish_config
fish_add_path
https://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ツールを追加するのは悪い考えです。