경고 - 이 질문은 이전 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입니다.