: bash에 대한 콜론 명령


28

bash 초보자로 말하면 복사 / 붙여 넣기 + github를 통해 .bashrc를 업그레이드하고 :나와 나와 Google을 모두 방해 하는 명령을 겪었습니다. 예 : ${USER_BASH_COMPLETION_DIR:=~/.bash_completion.d}.

.bashrc에 원래이 문장이 없고이 물건을 내 터미널에 입력하면 ( -> 관련 출력을 나타냅니다) :

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
echo $USER_BASH_COMPLETION_DIR
-> /Users/sh/.bash_completion.d

과:

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
export USER_BASH_COMPLETION_DIR=asdf
echo $USER_BASH_COMPLETION_DIR
-> asdf

그러나:

: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
export USER_BASH_COMPLETION_DIR=asdf
: ${USER_BASH_COMPLETION_DIR=~/.bash_completion.d}
echo $USER_BASH_COMPLETION_DIR
-> asdf

나는 그것을 얻지 못한다!

1) 콜론 명령은 어떻게 변수를 설정하지만 한 세트를 덮어 쓸 수 export없습니까?

2) :일부 .bashrc에서 사용하는 논리는 무엇입니까 ?

Mac 10.6.8 사용

(컨텍스트에서 키워드 콜론을 포함하여 해당 용어를 검색하려고 시도한 다른 사람들을 돕기 위해)


답변:


45

:기본적으로 true명령 과 동등한 쉘 내장입니다 . 예를 들어, if성명서 후에도 종종 논-오퍼로 사용됩니다 . 이 질문 에 대한 자세한 내용 은 stack overflow 에서 읽을 수 있습니다 .

${varname=value}기본적 수단의 값 설정 $varnamevalue경우는 $varname이미 설정되어 있지 않은 한 다음 $ varname에의 값을 반환합니다. 명령 줄에서 실행하려고하면 반환 된 값을 실행하려고 시도합니다. 퍼팅 :무 조작 방지로 앞이 값을 실행하려고에서 비난.

약간 다른 두 가지 형식이 있습니다.

${varname:=value}

varname이 설정되지 않았거나 null 인 경우 varname을 값으로 설정합니다.

${varname=value}

varname이 현재 설정되어 있지 않은 경우에만 varname의 값을 설정합니다 (즉, varname을 ""에서 value로 변경하지 않음)

(의견에서 그것을 명확히 한 chepner에게 감사합니다).

이 방법을 참조하는 다른 사람

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.