スクリプトで使用できるzsh(macOS)のグローバル関数をどのように定義しますか? [コピー]

スクリプトで使用できるzsh(macOS)のグローバル関数をどのように定義しますか? [コピー]

macOS 10.15(Catalina)以降、デフォルトのシェルがbashからzshに変更されました。私が経験した問題の1つは、グローバル機能を機能させることができないということでした。私はこれを.bash_profileからエクスポートしたが、zshはエクスポートされた関数の概念を知らないようです。

私がこれを持っているとしましょう:

function greet { echo "Hello $1, how are you today" }

その後、hello RocketNutsシェルで実行すると、Hello RocketNuts, how are you todayこれまでとても良かったことがわかります。

これで、この関数をグローバルにしたいと思います。このようにしてスクリプトでも使用できます。

私は試した:

  • それを入れて.zshrc
  • それを入れて.zshenv

~/myfunctionsまた、次のようにサブディレクトリとファイルを作成してみました~/myfunctions/greet

function greet { echo "Hello $1, how are you today" }
greet "$@"

次に、そのいずれかに~/.zshrc~/.zshenvを追加します。

fpath=( ~/myfunctions "${fpath[@]}" )
autoload -Uz greet

ただし、これらの方法のいずれもgreetスクリプトで関数を使用できないようにします。

シェルと判断すると、すべてうまくいきます。どの方法を使用しても、greetシェルから手動で関数を呼び出すことができます。

test.shただし、そのタスクを実行して実行するファイルがある場合は、greet Somebody常に「Hello:コマンドが見つかりません」と表示されます。

zshでどのように機能させるのですか?

ベストアンサー1

おすすめ記事