내 .bashrc
파일의 터미널 프롬프트 정의에는 무엇보다도 다음 코드 조각이 있습니다.
${debian_chroot:+($debian_chroot)}
이것은 무엇을 하며 나에게 필요합니까?
답변1
이 질문에 대답하는 중요한 부분은 다음의 스니펫입니다 /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
다른 데비안 시스템 내에 chrooted 데비안 시스템이 있을 때입니다(우분투는 데비안 기반입니다). 따라서 이것은 더 나은 개요를 위한 것입니다. 당신이 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하면 다음과 같습니다.
chroot /srv/nfs4/netboot/
프롬프트는 다음과 같습니다.
(netboot)user@host:~#
답변2
일반적으로 다음을 ${var:+value}
의미합니다.
if $var is defined and not null; then use 'value'; else do nothing
변수 는 파일 debian_chroot
에 정의되어 있습니다 /etc/bash.bashrc
. /etc/debian_chroot
이 파일이 존재하고 읽을 수 있으면 파일 의 내용을 사용합니다 . 기본적으로 이 파일은 존재하지 않습니다.
자세한 내용은 다음을 참조하세요.
이제 정확히 무슨 일이 일어나고 있는지 더 잘 이해하려면 터미널에서 다음을 수행하십시오.
radu@Radu:~$
PS1='${var:+($var)}\u@\h:\w\$ '
라두@라두:~$var="테스트"
----
|
------------------
|
V
(테스트)radu@Radu:~$var=""
라두@라두:~$var="등"
(등)radu@Radu:~$
답변3
환경 변수가 $debian_chroot
존재하고 비어 있지 않으면 (즉, 주변에 괄호 값이 있음 ) ${debian_chroot:+($debian_chroot)}
로 대체됩니다 .($debian_chroot)
$debian_chroot
$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 프롬프트에 다른 정보를 포함시키기 위해 이를 남용할 수도 있습니다.
기본적으로는 아무 작업도 수행하지 않습니다.
답변4
사용할 필요가 없다면 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 &