.bashrc
터미널 너비가 80자 이상인 경우 긴 프롬프트가 표시되도록 설정했습니다 . 그렇지 않으면 다운그레이드된 작은 프롬프트가 표시됩니다.
나는 if
이를 달성하기 위해 다음과 같은 진술을 사용합니다.
dp_smaller_than=80
if [ $COLUMNS -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi
이 명령문 앞에 하나 이상의 명령을 입력한 경우에만 제대로 작동합니다. sleep 0
그렇지 않으면 다음 오류가 표시됩니다.
[: -lt: unary operator expected
노트:degr_prompt
파일 시작 부분에 및 기능을 정의했습니다 .full_prompt
답변1
COLUMNS
변수는 bash에 의해 설정됩니다 upon receipt of a SIGWINCH.
( Shell Variables
섹션 참조 man bash
). 이는 환경 변수가 아니기 때문에 스크립트에 설정되지 않습니다. 자신을 살펴보십시오:
$ export COLUMNS=$COLUMNS
$ ./your-script.sh
이제 괜찮아. COLUMNS
스크립트에서 값을 검색해야 합니다 . 예를 들어 다음 을 사용할 수 있습니다 tput
.
$ tput cols
186
답변2
COLUMNS
어떤 방식으로든 설정되지 않았습니다 .bashrc
.
다음과 같은 열을 얻으십시오 tput cols
.
dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
PROMPT_COMMAND="degr_prompt"
else
PROMPT_COMMAND="full_prompt"
fi