bash globstar 연산자가 일반적으로 기본적으로 비활성화되어 있는 이유는 무엇입니까?

bash globstar 연산자가 일반적으로 기본적으로 비활성화되어 있는 이유는 무엇입니까?

이것은 매우 유용한 기능인 것 같습니다. 하지만 일반적으로 기본적으로 비활성화되어 있다는 것을 알아야 합니다. 내 시스템에서 활성화하는 것을 고려했습니다. 하지만 비활성화된 데에는 그럴 만한 이유가 있을 것입니다. 이를 모르고 활성화하는 것은 현명하지 못한 것 같습니다. 그래서 제 질문은: bash 바이너리 연산자가 일반적으로 기본적으로 비활성화되는 이유는 무엇입니까?

어떻게 활성화하는지, 오퍼레이터를 뭐라고 부르는지, 어떻게 사용하는지에 대해 여러 가지 질문을 찾았습니다. 그들은 모두 먼저 활성화해야 한다고 언급했습니다. 하지만 어떤 문제도 설명할 수 없어기본적으로 비활성화되어 있습니다.

답변1

개발자에게 물어보지 않고서는 확실히 알기 어렵습니다.

그럼에도 불구하고 이는 2009년까지 Bash에 추가되지 않은 호환되지 않는 확장입니다(이전에는 zsh, ksh93 및 yash에서 구현됨). 실수로 실행되면 놀라운 결과가 나올 수도 있습니다. 예를 들어 스크립트가 다음과 같은 작업을 수행하면 위험할 수도 있습니다.

rm -- "$dir"/*$pattern*/*       # or
rm -- "$dir"/*"$string"*/*

$pattern비어 있지 않은지 확인할 필요가 없습니다 ., 둘 다 Bash에서 트리거됩니다 globstar(활성화된 경우).

**: zsh, ksh93 -o globstar, tcsh(after set globstar) 및 after 가 있는 대부분의 다른 쉘에도 동일한 경고가 적용됩니다 yash -o extended-glob. 하지만 아닙니다 fish. **의미는 약간 다르지만 두 개의 별표 사이에 있는 것으로는 트리거되지 않습니다.

스테판의 답변 보기ls * , ls ** 및 ls *** 의 결과다양한 셸에서의 구현 내역과 차이점을 이해합니다.

관련 정보