$SHLVL
쉘 호출 설정을 인쇄하는 장난감 스크립트가 있습니다 .
$ cat tst.sh
echo "Level: $SHLVL"
echo "Options: $-"
source
현재 셸에 있으면 예상대로 작동합니다.
$ source tst.sh
Level: 1
Options: himBHs
서브쉘에 있다면 sourced
별로 흥미롭지 않습니다.
$ /bin/bash
$ source tst.sh
Level: 2
Options: himBHs
설정을 사용하여 실행하면 -c
약간 다른 결과가 나타납니다.
$ /bin/bash -c 'source tst.sh'
Level: 2
Options: hBc
따라서 누락된 옵션을 제공합니다.
$ /bin/bash -sic 'source tst.sh'
Level: 2
Options: himBHcs
sourced
내 스크립트가 이 설정을 사용할 때마다 -c
스크립트의 마지막 명령을 완료한 후 하위 쉘이 종료됩니다. 이는 내가 방지하고 싶은 것이므로 스크립트의 마지막 명령 이후 interactive
하위 쉘 에 남아 있어야 합니다.
기본적으로 다음 단계 순서를 복제하고 싶지만 다음을 사용합니다 -c
.
$ /bin/bash
$ source tst.sh
답변1
어쩌면 보기보다 간단할 수도 있습니다.
bash --init-file tst.sh
또는
bash --rcfile tst.sh
답변2
이를 바탕 으로 --init-file
Up + Enter를 눌러 기록에서 명령을 다시 실행할 수 있습니다.
echo 'pwd; ls' >/tmp/hist
HISTFILE=/tmp/hist bash --init-file /tmp/hist