Stack Exchange에서 찾은 답변이 맞으며이 자습서가 잘못되었습니다. 직접 실험하거나 표준 에서 찾아 볼 수 있습니다 . 설정 해제 IFS
는 기본값을 space-tab-newline의 기본값으로 설정하는 것과 동일하지만 비어 있으면 IFS
필드 분할이 효과적으로 해제됩니다.
히스토리 구현 에 대해서는 IFS의 Sven Mascheck 페이지를 참조하십시오 . 몇 가지 역사적인 쉘은을 좋아하지 않았으며 unset IFS
매우 오래된 ksh 버전은 빈 것으로 취급 IFS
했지만 모든 현대 쉘과 대부분의 오래된 쉘 IFS
은 기본값과 같이 설정되지 않은 것으로 취급합니다 .
IFS=
필드 분할을 해제하지 않으려면 스크립트를 시작해서는 안됩니다 (합리적인 결정이 될 수 있습니다. 그러나 그와 함께 끄지 않는 한 글로브를 피하려면 대체를 큰 따옴표로 묶어야합니다 set -f
). 기본값을 재설정하려면을 사용하십시오 unset IFS
. 이것이 스크립트의 시작 부분에서 유용한 지 여부는 논쟁의 여지가 있습니다. PATH
발신자가 스크립트를 잘못 작성하기 위해 할 수 있는 회피와 같은 다른 나쁜 것들이 많이 있습니다.
이 튜토리얼은 또한 재설정하는 것이 좋습니다 PATH
. 이것은 일반적으로 나쁜 조언입니다. 대부분의 경우 올바른 검색 경로를 예측할 수 없지만 사용자는 알고 있습니다. 당신은 어떻게 여부를 알고 /usr/local/bin
나 /home/bob/bin
에있는 사람이 어디 고대의 유닉스에 유틸리티의 버그 수정 버전을 포함 /usr/bin
버그가? /usr/xpg6/bin
앞서 나갈 것인지를 알아 내기 위해 모든 논리를 포함하고 싶 /bin
습니까? 어떤 위치에서 원하는 /usr/gnu/bin
가요? 스크립트가 특정 시스템을 대상으로하지 않는 한 PATH를 재설정하지 마십시오.
이 튜토리얼을 읽지는 않았지만 한 가지 확인했습니다. 처음부터 변수 대체와 명령 대체를 항상 큰 따옴표로 묶으라고 알려주지는 않습니다. 그래서 나는이 튜토리얼이 좋은 것이라고 생각하지 않습니다.
unset IFS
필드 분할을 재설정하지만 bash에서 IFS를 기본값으로 재설정하지 않습니다.