シェルは `bash -i -c によって生成されます。「相互作用?

シェルは `bash -i -c によって生成されます。「相互作用?

~からhttps://unix.stackexchange.com/a/276611/674

bashrunを使用すると、-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

おすすめ記事