~에서https://unix.stackexchange.com/a/276611/674
bash
run 을 사용 하면-c
비대화형 쉘로 처리되며 지정하지~/.bashrc
않는 한 읽지 않습니다-i
. 그래서,$ type cp cp is aliased to ‘cp -i’ # Defined in ~/.bashrc $ cp .file1 file2 cp: overwrite ‘file2’? n $ bash -c "cp .file1 file2" # Existing file is overwritten without confirmation! $ bash -c -i "cp .file1 file2" cp: overwrite ‘file2’? n
쉘은 bash -i -c <command>
대화형으로 생성됩니까, 아니면 비대화형으로 생성됩니까?
그러한 쉘은 stdin의 명령을 받아들이지 않습니다. 그렇죠? 그럼 대화형이 아니죠?
그러한 쉘은 읽기 ~/.bashrc
때문에 비대화형일 수 없습니다. 그렇죠?
답변1
사용$-
~에서배쉬 참조 매뉴얼:
시작 스크립트의 Bash가 대화형으로 실행되고 있는지 확인하려면 "-" 특수 매개변수의 값을 테스트하세요. 쉘이 대화형일 때 i가 포함됩니다.
이 예의 경우,
$ bash -c 'echo $-' # This is a non-interactive shell
hBc
$ bash -i -c 'echo $-' # This is an interactive shell
himBHc