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でどのように機能させるのですか?