정장과 쇼핑, 왜 둘일까요?

정장과 쇼핑, 왜 둘일까요?

setshopt다 다양한 옵션을 제어하는 ​​셸 내장 명령입니다. 어떤 옵션이 어떤 명령으로 설정되는지, 어떤 옵션이 설정/해제되는지( set -o/+o, shopt -s/-u) 잊어버리는 경우가 많습니다. 동일한 작업을 수행하는 것처럼 보이는(그리고 해당 작업을 수행하기 위한 매개변수가 다른) 두 개의 다른 명령이 있는 이유는 무엇입니까? 어떤 옵션이 어떤 명령과 함께 사용되는지 기억하는 쉬운 방법/니모닉이 있습니까?

답변1

내가 아는 한, 이러한 set -o옵션은 다른 Bourne 스타일 쉘(주로 ksh)에서 상속된 옵션이며 이러한 shopt옵션은 bash에만 적용됩니다. 제가 아는 한, 논리가 없습니다.

답변2

차이점은 bash에서 사용하는 환경 변수가 변경되었다는 것입니다. 명령을 사용 set하여 결과를 로 설정합니다. 명령 $SHELLOPTS을 사용 shopt하여 결과를 로 설정합니다 $BASHOPTS.

답변3

답변4

책 "Bash를 사용한 Linux 쉘 스크립팅", 페이지 63에서:

역사적으로 이 set명령은 옵션을 켜거나 끄는 데 사용되었습니다. 옵션의 수가 많아질수록 set옵션은 단일 문자 코드로 표시되므로 사용이 점점 어려워집니다. 따라서 Bash는 shopt(주택 옵션) 명령은 문자 대신 이름으로 옵션을 켜고 끕니다. 일부 옵션은 문자로만 설정할 수 있습니다. 다른 것들은 shopt명령에서만 사용할 수 있습니다. 이로 인해 특정 옵션을 찾고 설정하는 것이 혼란스러운 작업이 됩니다.

관련 정보