私は "stuff"を使うときに呼び出されるファイルを見つけるために "which stuff"を使うのに慣れています。 「あるプロンプト」への回答を見て驚きました。
prompt () {
local prompt_opts
set_prompt "$@"
(( $#prompt_opts )) && setopt noprompt{bang,cr,percent,subst} "prompt${^prompt_opts[@]}"
true
}
私のArchlinuxシステムで。これはどこから来て、現在構築されているchroot環境でプロンプトコマンドを使用できるようにするにはどうすればよいですか? (私は他のコマンドをコピーしました...ここでは動作しません=))
編集する:私はzshをシェルとして使用しています。たぶんこれは何かが変わるかもしれません。
答え1
実行時に取得するコマンドはwhich
という関数ですprompt
。出力は定義です。
次のコマンドを使用して表示することもできます。
$ declare -f prompt
プロンプト()関数はどこにありますか?
これは少しトリッキーです。grep
" "文字列を見つけるなどのツールを使用する必要がありますprompt ()
。一般的に見なければならない場所は次のとおりです。
強く打つ
$ grep -R "prompt ()" .bashrc .bash_profile /etc/bashrc /etc/profile*
扱いにくい
$ grep -R "prompt ()" <files>
zsh
マニュアルページで使用されるファイルは次のとおりです。
$ZDOTDIR/.zshenv
$ZDOTDIR/.zprofile
$ZDOTDIR/.zshrc
$ZDOTDIR/.zlogin
$ZDOTDIR/.zlogout
${TMPPREFIX}* (default is /tmp/zsh*)
/etc/zshenv
/etc/zprofile
/etc/zshrc
/etc/zlogin
/etc/zlogout (installation-specific - /etc is the default)
次のいずれかの場所に配置する必要があります。これらの場所のいずれにも表示されない場合は、検索範囲を広げる必要があります。文字列 " prompt
"だけを探すことをお勧めします。
答え2
prompt
set_prompt
それ自体は役に立ちません。また、必要な(およびすべての依存関係)という別の関数を呼び出します。
最初に見つけなければならないのは自動ロードされた機能です。
print -rl $fpath/prompt(N)
これに加えて、初期化ファイルと関数ロードパスのファイルから関数定義を取得します。
grep -E '^ *function +prompt($|[^0-9A-Z_a-z])|^ *prompt *\(' ~/.z* /etc/zsh/*(.N) /etc/z*(.N) $fpath/*(.)
このprompt
関数の定義は…/Prompts/promptinit
次のとおりです。プロンプトのトピック要素また、選択したプロンプトテーマのファイルpromptinit
も必要です。選択したプロンプトトピック(関数呼び出し)をprompt_*_setup
表示します。~/.zshrc
prompt