나는 "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