누구든지이 명령의 의미를 설명 할 수 있습니까?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
누구든지이 명령의 의미를 설명 할 수 있습니까?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
답변:
${GZIP_BINDIR-'/bin'}A는 bash파라미터 확장 패턴. 보낸 사람 man bash:
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise, the value of parameter
is substituted.
이 부분이 있기 직전에 맨 페이지에는 (@jwodder에게 감사를 표합니다) :
Omitting the colon results in a test only for a parameter that is unset.
맨 페이지에서 알 수 있듯이 변수의 기본값이 설정됩니다 GZIP_BINDIR. 경우 GZIP_BINDIR(사용하지 않는으로 널 (null)이 아닌 이전에 설정 한 값이 :그 값이 사용됩니다), 그렇지 않으면 /bin변수의 값으로 사용됩니다 GZIP_BINDIR.
반면에 널값도 테스트하려면이 패턴 (include :)을 사용하십시오 .
${GZIP_BINDIR:-'/bin'}
그 후에 $PATH는 이전에 보유한 값으로 확장됩니다. 따라서 PATH이전에 다음을 수행 한 경우 :
/usr/sbin:/usr/bin
이제 귀하 PATH는 (고려 GZIP_BINDIR되지 않은) 것입니다 :
/bin:/usr/sbin:/usr/bin
export PATH이 것 PATH자식 프로세스를 모두 사용할 수 있습니다.
:-은 "아래에 설명 된 양식 (예 : :-)을 사용하여 하위 문자열 확장을 수행하지 않는 경우 bash는 설정되지 않았거나 null 인 매개 변수를 테스트합니다. 콜론 생략 설정되지 않은 매개 변수에 대해서만 테스트를 수행합니다. "
PATH과 export를 단일 명령으로 결합 할 수 있습니다 .export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
매개 변수 확장 안에 하이픈 앞에 콜론이 ${GZIP_BINDIR-'/bin'}없습니까?
이런 종류의 구성은 거의 항상 콜론으로 작성됩니다. ${GZIP_BINDIR:-'/bin'}"$ GZIP_BINDIR이 NULL이거나 설정되어 있지 않으면 '/ bin'으로 설정하십시오."
그러나 제공 한 구문 은 유효하지만 드문 경우입니다. ${GZIP_BINDIR-'/bin'}(콜론 없음)은 "$ GZIP_BINDIR이 설정되지 않은 경우 '/ bin'으로 설정"을 의미합니다. 설정되었지만 (선언 된) 아무 것도 할당되지 않은 경우 (예 : NULL) 아무것도 삽입되지 않습니다.
$ GZIP_BINDIR이 설정되었지만 NULL 인 경우 변수 구문 (...} $ PATH ...) 다음 의 콜론 이 여전히 삽입 되지만 여기에 버그가있을 수 있습니다 . 이렇게하면 $ PATH의 시작 부분에 콜론이 추가되므로 현재 디렉토리가 먼저 검색됩니다.:
이는 현재 디렉토리에 두는 것만으로 표준 명령과 동일한 이름의 악성 프로그램을 쉽게 실행할 수있게하므로 대부분 보안 문제로 간주됩니다.
$ GZIP_BINDIR이 설정되었지만 NULL (빈) 인 경우 $ PATH를 변경하지 않고 그대로 두려면 올바른 구문은 다음과 같습니다. ${GZIP_BINDIR-'/bin:'}$PATH; export PATH
$ GZIP_BINDIR이 설정되지 않았거나 설정되었지만 NULL 인 경우 $ PATH를 변경하지 않고 그대로 두려면 올바른 구문은 다음과 같습니다. ${GZIP_BINDIR:-'/bin:'}$PATH; export PATH
이 명령은 PATH 변수를 업데이트합니다.
은 PATH실행 프로그램이있는 디렉토리의 집합을 지정하는 환경 변수입니다.
PATH="${GZIP_BINDIR-'/bin'}:$PATH";
GZIP_BINDIR이전 PATH로 종료하면 다른 변수의 값을 추가하고 그렇지 않으면 / bin을 대신 사용하여 PATH에 추가하십시오.
export PATH
수출은 모든 자식 프로세스에 사용할 수있는 경로를 설정하는 데 사용 및 읽기 서브 쉘되어 이 에 대한 자세한 내용은
이것은 정적이 아니며 쉘을 종료하면 느슨해집니다.
이 PATH 편집을 영구적으로 만들려면 다음 행을 .bashrc
gedit .bashrc
그리고 라인을 추가
export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
그런 다음 명령을 실행하십시오.
source .bashrc
:에${GZIP_BINDIR-'/bin'}꼭 그렇지는 않습니다."${parameter-word}맨 페이지에없는 것처럼 보이지만 유효합니다.