~から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