터미널 에뮬레이터(바람직하게는 gnome-terminal)를 시작하고 사용자 정의 프롬프트 문자열을 사용하여 내부적으로 대화형 zsh를 실행할 수 있기를 원합니다. 기본 프롬프트 문자열을 가장 자주 사용하고 가끔씩만 사용자 정의 zsh 프롬프트 문자열로 터미널을 시작하고 싶기 때문에 수정하고 싶지 않습니다 .zshrc
(더 구체적으로 말하면 오른쪽 프롬프트에 시간이 표시되기를 원합니다). .
터미널 창이 이미 열려 있는 경우 다음을 실행하여 이 문제를 해결할 수 있습니다.
export RPS1=%T zsh
하지만 새 터미널 인스턴스를 시작할 때 작동하도록 하는 구문을 알아낼 수 없습니다. 각 명령 아래의 오류 메시지와 함께 시도한 작업은 다음과 같습니다.
gnome-terminal -- export RPS1=%T zsh
# Error: Failed to execute child process “export” (No such file or directory)
gnome-terminal -- sh -c export RPS1=%T zsh
# Prints all the options, like with `set`
# and then exits with "The child process
# exited normally with status 0".
gnome-terminal -- sh -c "export RPS1=%T zsh"
# The child process exited normally with status 0.
gnome-terminal -- sh -c "export RPS1=%T; zsh"
# This start the terminal with zsh, but the RSP1 is not changed
맞춤 rc 파일을 읽는 것을 고려했는데,이 답변처럼요, 그러나 이를 사용하지 않고 zsh에서 이를 수행할 수 있는 방법은 없는 것 같습니다 source
. 이로 인해 위와 비슷한 문제가 발생했습니다.
답변1
에서는 다음과 같이 설정하여 재정의를 zshrc
허용합니다 .RPS1
# If rps1 is not set, use a default value
RPS1=${rps1-"Your usual RPROMPT"}
RPS1
이제 환경에서 설정하여 다른 명령으로 명령을 실행할 수 있습니다rps1
. 예를 들면 다음과 같습니다.
rps1=%T gnome-terminal
- 매개변수 확장을 통해 null로 설정할
${param-word}
수 있습니다 .RPS1
rps1= gnome-terminal
셸에서 사용되는 매개변수(예 RPS1
: )는 내보낼 필요가 없습니다. 이는 쉘을 설정하는 데 사용되므로 rc 파일에서 한 번 설정해야 합니다.
프로그램(예: gnome-terminal
)이 해당 환경에서 시작되면 rps1
해당 프로그램에서 시작된 모든 후속 프로그램이 rps1
해당 환경에서 해당 프로그램을 볼 수 있습니다. 이를 방지하려면 다음 중 하나를 추가할 수 있습니다 zshrc
. unset rps1
(게시물 설정에 사용 RPS1
) 또는 typeset +x rps1
.
그런데, 다음은 두 개의 쉘 변수를 내보냅니다.
export RPS1=%T zsh
- 위에는 &가 환경에 생성되도록 하는
export
두 개의 매개변수가 있습니다.RPS1=%T
zsh=''
RPS1
현재 쉘에서 설정하려면 다음을 수행하십시오.
RPS1=%T
답변2
셸을 실행하면 셸이 /~.zshrc
프롬프트를 재정의하는 를 처리합니다.
한 가지 옵션은 다음과 같습니다 ~/.zshrc
.
MY_PROMPT="${MY_PROMPT:-"> "}" # Set the value to "> " if it isn't currently set
RPS1="${MY_PROMPT}"
그런 다음 쉘을 시작하면 다음을 얻을 수 있습니다.
>
> MY_PROMPT="my new prompt > " zsh
my new prompt >
비표준 변수(여기 MY_PROMPT
)를 선택하는 것은 쉘이 ~/.zshrc
.