![쉘은 `bash -i -c에 의해 생성됩니다.'상호작용?](https://linux55.com/image/6192/%EC%89%98%EC%9D%80%20%60bash%20-i%20-c%EC%97%90%20%EC%9D%98%ED%95%B4%20%EC%83%9D%EC%84%B1%EB%90%A9%EB%8B%88%EB%8B%A4.'%EC%83%81%ED%98%B8%EC%9E%91%EC%9A%A9%3F.png)
~에서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