이 옵션이 무엇을 의미하는지 이해하지 못하거나 bash가 옵션 없이 동일하게 동작하는 것 같습니다(표준 입력을 읽는 대화형 쉘). 언제 이러한 옵션을 명시적으로 사용하고 싶나요?
답변1
Bash 호출을 보는 다른 방법
참조 매뉴얼은 이미 매우 자세하게 설명되어 있습니다.설명하다Bash를 호출하는 방법에 대해. 그러나 나는 약간 다른 방식으로 기록하는 것을 선호합니다.
bash <options> <script_file> [<arguments>]
bash <options> -c <command_string> [<arguments>]
bash <options> [-s [<arguments>]
처음 두 개는 비대화형이므로 관련 기능(프롬프트, 작업 제어, 명령 기록...)이 없습니다. 그러나 이러한 기능이 필요한 경우 -i 플래그를 사용하여 강제할 수 있습니다.
세 번째는 대화형이며 선택적 -s 플래그는 다음 단락에서 의미가 있습니다.
매개변수 지정
예시 1: 기본
-s 옵션을 사용하여 매개변수를 지정할 수 있습니다.
bash -s a b c
쉘 시작... 이 쉘에서 매개변수를 확인할 수 있습니다.
echo $1 $2 $2
bash 명령의 매개변수를 반영합니다.
a b c
"-s" 옵션이 없으면 첫 번째 위치 인수는 파일 이름으로 해석됩니다.
bash a b c
주어진
bash: a: No such file or directory
예 2: 구분 기호 사용
이전에 사용된 -s 옵션을 사용하여 구분된 문서에 인수를 제공할 수 있습니다(명령을 포함하기 위해 파일을 사용하지 않으려는 경우).
bash -s a b c <<'EOC'
echo $1 $2 $3
EOC
다음을 제공합니다:
a b c
bash 명령은 heredoc의 명령을 실행한 다음 종료됩니다. 그러면 bash 명령을 호출한 셸로 돌아갑니다.
예시 3: 파이프라이닝
(일부 인라인 스크립팅을 구현해야 하는 경우) 파이프라인에 bash를 포함하는 것을 고려하고 다시 매개변수 제공 기회를 활용하세요.
echo 'echo HELLO $1' | bash -s WORLD
다음을 제공합니다:
HELLO WORLD
이것은 인위적인 예이지만 좀 더 복잡한 스크립트(구분 기호 포함!)의 경우 유용할 수 있습니다.
답변2
제가 아는 한 테스트 목적으로 사용된 것 같습니다. 시작 파일은 이를 사용하여 상태 및 쉘 스크립트를 테스트할 수 있습니다.
기본적으로 bash 쉘을 호출할 때 -i 및 -s를 사용하므로 테스트 목적으로 스크립트나 파일을 통해 이러한 옵션을 사용하여 쉘을 명시적으로 호출하여 일반 로그인 bash 쉘이 제공하는 상태를 테스트할 수 있다고 가정합니다.
주석에서 지적한 대로 Esref를 호출하는 매뉴얼 페이지에서 이 정보를 찾았습니다. 하지만 이는 평소 사람이 할 일이 아닌 것 같아서 이해하기 쉽지 않을 수도 있습니다.