0

.zshrc ファイルでいくつかの変数、エイリアス、および関数を定義しました。

export MY_VAR="example"

alias my_alias="echo an example"

function say_hello
{
    echo "say hello"
}

端末から呼び出されたときに、3つすべてが定義されていることを確認しました。ただし、別のスクリプト (それ自体が同じ端末から呼び出される) から関数 say_hello を呼び出そうとすると、関数が定義されていないように見えます。「コマンドが見つかりません」というエラーが表示されます。エイリアスと変数 MY_VAR は、この別のスクリプトから参照されたときに問題なく定義されているように見えます。

何が起こっているのかについてのアイデアはありますか? ありがとう。

4

1 に答える 1

3

zshが端末から呼び出されると、対話モードで呼び出され、$ZDOTDIR/.zshrc$HOME/.zshrc)を含む追加の構成ファイルをzshがソースします。デフォルトでは(非ログインシェルの非対話型モードで)、/etc/zsh/zshenv*ファイルと$ZDOTDIR/.zshenv$ZDOTDIRほとんどの場合)ファイルのみをソースします。named$HOMEの最後の2つのセクションを参照してください。エイリアスが定義されている理由(どの程度正確に確認しましたか?)はわかりませんが、MY_VARはエクスポートしたため、スクリプトで定義されています。man zshSTARTUP/SHUTDOWN FILES

*/etc/zshenvドキュメントによると、zshパッケージをに変更したGentooメンテナである可能性が高いとのこと/etc/zsh/zshenvです。

注:暗黙の依存関係.zshenvが作成されるため、このような関数をファイルに入れることはお勧めできません。代わりにスクリプトライブラリを使用する必要があります。

~/.zsh/say_hello.zsh

そして、やります

source ${ZDOTDIR-$HOME}/.zsh/say_hello.zsh

スクリプトとの両方で.zshrc

于 2012-11-29T15:37:00.763 に答える