
나는 보통 Linux의 bash에서 작업하며 변수를 내보내야 할 경우 다음과 같이 작성할 수 있습니다.
export LC_ALL=C
그러나 나는 요즘 더 많은 Solaris 작업을 수행하고 있으며 함께 일하는 Solaris 관리자는 항상 다음과 같이 작성합니다.
LC_ALL=C ; export LC_ALL
전자보다 후자를 선호하는 이유가 있나요?
나는 전자가 일부 쉘에서 인식되지 않을 수도 있다고 생각합니다. 어느 것?
감사해요.
답변1
나는 진정한 Bourne 쉘(많은 상업용 Unix 변형의 /bin/sh)이 단일 명령문으로 할당 및 내보내기를 지원하지 않는다고 생각합니다. 이것이 제가 솔라리스 시절을 기억하는 방법입니다.
이제 새로운 Solaris 버전이 기본적으로 bash를 사용하는지 모르겠습니다. 그럼에도 불구하고 후자의 경우는 휴대성이 더 좋으므로 계속 사용하겠습니다.
답변2
Solaris에서 /bin/sh에는 두 개의 명령문이 필요한 반면 /bin/bash는 하나의 명령문이면 충분합니다. Linux에서 /bin/sh는 일반적으로 /bin/bash에 대한 심볼릭 링크이므로 차이가 없습니다.
다른 스크립트에서 소스를 얻을 수 있는 스크립트를 작성하는 경우 항상 두 개의 명령문 형식을 사용하십시오. 스크립트가 소스가 아니거나 소스가 되지 않을 경우 스크립트 상단의 shebang 줄을 확인하여 어떤 쉘을 사용하고 있는지 확인하세요. 많은 Solaris 스크립트는 /bin/sh를 사용하며 이는 많은 소프트웨어 패키지의 기본값입니다. 따라서 대부분의 관리자는 변수를 내보내는 보다 이식 가능한 방법을 선호합니다.
답변3
Solaris 10부터 위험한 부작용 없이 bash를 루트 셸로 사용할 수 있으므로 주로 bash에서 작업하는 경우 전자를 사용할 수 있습니다. 시스템이 단일 사용자로 재부팅해야 하고 bash를 찾지 못하면 다음으로 자동 대체됩니다. 본 쉘.
답변4
저는 1998년경 Solaris 2.6에서 작업하고 있습니다. 이 버전은 원래 sh 및 csh와 함께 제공되었습니다. sh를 사용하면 env의 올바른 결과를 보려면 언급한 두 줄 버전이 필요하다는 것을 알 수 있습니다. sunfreeware.org의 bash를 사용하면 한 줄 버전에서도 잘 작동합니다.