bash에서 VARIABLE=() {함수 정의}가 작동하는 방식

bash에서 VARIABLE=() {함수 정의}가 작동하는 방식

경고 - 이 질문은 이전 Bash에 관한 것입니다.취약점이 있어 변경되었습니다.


내 bash ENV에서 비슷한 것을 보았습니다.

module=() {  eval `/usr/bin/modulecmd bash $*` }

이 구조는 어떻게 작동합니까? 이것을 무엇이라고 부르나요?

나는 modulecmd에 대해 묻는 것이 아니라 전체 구성에 대해 묻는 것입니다.

답변1

실제로는 이라는 함수입니다 module. 다음을 수행하면 환경 변수에 나타납니다.출구기능.

$ test() { echo test; }
$ export -f test
$ env | sed -n '/test/{N;p}'
test=() {  echo test
}

~에서bash 문서 - 내보내기:

출구

 export [-fn] [-p] [name[=value]]

환경의 하위 프로세스에 전달될 각 이름을 표시합니다.-f 옵션이 제공되면 이름은 쉘 함수를 나타냅니다.;그렇지 않으면 이름은 쉘 변수를 참조합니다. -n 옵션은 각 이름이 더 이상 내보내기용으로 표시되지 않음을 의미합니다. 이름이 제공되지 않거나 -p 옵션이 제공되면 내보내기 이름 목록이 표시됩니다. -p 옵션은 입력으로 재사용할 수 있는 형식으로 출력을 표시합니다. 변수 이름 뒤에 =value가 오면 변수의 값이 value로 설정됩니다.

유효하지 않은 옵션이 제공되거나 이름 중 하나가 유효한 쉘 변수 이름이 아니거나 -f로 제공된 이름이 쉘 함수가 아닌 경우를 제외하고 리턴 상태는 0입니다.

관련 정보