답변:
할 수 있습니다. 입력 var=$var한 다음 확장하고 편집하십시오. 확장하려면 Esc+를 사용 Ctrle하십시오 (기본 바로 가기, 출력 bind -p | grep shell-expand-line을 확인하여 확인하십시오).
그래서:
muru@muru-1604:~$ PS1=$PS1
될 것입니다:
muru@muru-1604:~$ PS1=${debian_chroot:+($debian_chroot)}\u@\h:\w\$
그런 다음 Ctrlx Ctrle( edit-and-execute-commandreadline 용어로) 편집기에서 편집 할 수 있습니다 . 저장하고 종료하면 저장된 내용이 쉘에 의해 실행됩니다.
당신이 이미 PS1=...당신의 역사에 있다면 , 당신은 그것으로 되돌아 갈 수 있습니다 Ctrlx Ctrle.
에서 bash는 설명서 :
shell-expand-line (M-C-e)쉘처럼 라인을 확장하십시오. 이것은 모든 쉘 단어 확장뿐만 아니라 별명 및 히스토리 확장을 수행합니다.
edit-and-execute-command (C-xC-e)현재 명령 행에서 편집기를 호출하고 결과를 쉘 명령으로 실행하십시오. Bash는 $ VISUAL, $ EDITOR 및 emacs를 순서대로 편집기로 호출하려고 시도합니다.
bind -p글롭, 물결표 및 히스토리 라인을 확장 할 수 있음을 알았습니다. 산뜻한!
bashrc를 소싱하는 대신 변수 만 포함하는 다른 파일을 소싱하십시오.
그것을 만드십시오 :
echo "PS1='$PS1'" > /tmp/PS1
참고 : 변수에 작은 따옴표가 포함되어 있으면 이스케이프 할 수있는 명령을 사용해야합니다. 예 :
declare -p PS1 | cut -d' ' -f3- > /tmp/PS1편집기에서 파일을 엽니 다 (예 :) nano /tmp/PS1.
nano반복 실행을 피하기 위해 다른 터미널 / TTY에서 실행하거나 그래픽 편집기를 사용할 수 있습니다.변경하고 저장하십시오.
그것을 소스 :
source /tmp/PS1필요에 따라 3 단계와 4 단계를 반복하십시오.
Zsh에는 vared변수를 인라인으로 편집 할 수 있는 내장 기능이 있습니다. 원래 수퍼 유저에 게시 된 내 자신의 버전을 작성했습니다 .
vared(){
# Based on the zsh builtin of the same name.
IFS= read -rei "${!1}" "$1"
}
이것은 Zsh 내장과 약간의 차이점이 있습니다.
vared $)그런 다음 PS1을 편집하려면을 실행하십시오 vared PS1.
PS1='$PS1'하면 따옴표가 삭제되었지만 입력PS1=\'$PS1\'은 완벽하게 작동합니다.