터미널 프롬프트에서“$ {debian_chroot : + ($ debian_chroot)}”는 무엇을합니까?


86

.bashrc파일의 터미널 프롬프트 정의 에는 다음과 같은 코드 스 니펫이 있습니다.

${debian_chroot:+($debian_chroot)}

이것이 무엇을합니까, 필요합니까?

답변:


83

이 질문에 대답하는 데 중요한 부분은 다음의 스 니펫입니다 /etc/bash.bashrc.

if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
    debian_chroot=$(cat /etc/debian_chroot)
fi

변수 $debian_chroot가 비어 있고 파일 /etc/debian_chroot이 존재하고 읽을 수있는 경우 변수는 파일의 내용으로 설정됩니다.

이제이게 뭐야? 이 파일 /etc/debian_chroot은 다른 데비안 시스템 안에 루트가있는 데비안 시스템이있을 때입니다 (우분투는 데비안을 기반으로합니다). 더 나은 개요입니다. chroot에 있는지 여부를 구별합니다.

예를 들어 다른 시스템의 chroot가있는 /srv/nfs4/netboot/경우이 chroot의 이름을 설정할 수 있습니다 /srv/nfs4/netboot/etc/debian_chroot(제 경우에는 nfs4 pxe netboot 드라이브입니다).

user@host:~# echo "netboot" >/srv/nfs4/netboot/etc/debian_chroot

그리고 당신이 안에 뿌리를 내릴 때 :

chroot /srv/nfs4/netboot/

프롬프트는 다음과 같습니다.

(netboot)user@host:~#

54

일반적으로 다음을 ${var:+value}의미합니다.

if $var is defined; then use 'value'; else do nothing

debian_chroot변수에 정의 된 /etc/bash.bashrc파일입니다. /etc/debian_chroot이 파일이 존재하고 읽을 수있는 경우 파일 내용을 가져옵니다 . 기본적으로이 파일은 존재하지 않습니다.

자세한 내용은 다음을 참조하십시오.

이제 정확히 무슨 일이 일어나고 있는지 더 잘 이해하려면 터미널에서 다음을 수행하십시오.

radu@Radu:~$PS1 = '$ {var : + ($ var)} \ u @ \ h : \ w \ $' radu @ Radu : ~ $ var = "test" ---- | ------------------ |

                  
                   
  
  
  V
( 테스트 ) 라두 @ 라두 : ~ $ VAR = "" 라두 @ 라두 : ~ $ VAR = "등등" ( ) 라두 @ 라두 : ~ $


19

환경 변수 $debian_chroot가 존재하고 비어 있지 않은 경우이 값으로 ${debian_chroot:+($debian_chroot)}대체됩니다 ($debian_chroot)(즉, $debian_chroot주변의 parens 값 ).

$debian_chroot파일이 존재하고 (기본적으로 존재하지 않음) 아직 값이없는 경우 /etc/bash.bashrc의 내용으로 설정됩니다 ./etc/debian_chroot$debian_chroot

${debian_chroot:+($debian_chroot)} 일반적으로 Bash 프롬프트를 정의하는 데 사용됩니다 (예 :

PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

이름에서 알 수 있듯이이 변수를 사용 etc/debian_chroot하여 chroot 루트 폴더 에 배치 하여 현재 chroot를 나타낼 수 있습니다 .

chroot가 무엇인지 모르는 경우에는 필요하지 않습니다. ;-) 그러나 Bash 프롬프트에 다른 정보를 포함시키기 위해 남용 할 수 있습니다.

기본적으로 아무것도하지 않습니다.


0

사용할 필요가 없으면 debian_chroot다음 을 사용 하여 명령 프롬프트가 표시된 시간을 저장하는 편리한 장소입니다.

export PROMPT_COMMAND='debian_chroot=$(date +%r)'

터미널에 이것을 입력하고 시간이 지남에 따라 명령 프롬프트가 변경되는 것을보십시오.

rick@alien:~$ export PROMPT_COMMAND='debian_chroot=$(date +%r)'

(09:14:59 PM)rick@alien:~$ 

시간이 한 번 설정된 후 매 초마다 업데이트되는 실행 시계를 얻으려면 다음을 수행하십시오.

while sleep 1;do tput sc;tput cup $(($(tput lines)-1)) 1;printf `date +%r`;tput rc;done &
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.