ターミナルエミュレータは常にシェルを介して間接的にプログラムを実行しますか?

ターミナルエミュレータは常にシェルを介して間接的にプログラムを実行しますか?

ターミナルエミュレータは常にシェルを介して間接的にプログラムを実行しますか?

たとえば、ターミナルエミュレータウィンドウを開くと、自動的にシェルが実行され、シェルにはコマンドのみを入力できます。

たとえば、次のように端末エミュレータから直接プログラムを実行すると、

xterm -e "echo hello; sleep 5"

xtermプログラムはシェルを介して間接的に実行されますか、それともシェルを使用せずに直接実行されますか?

ベストアンサー1

端末エミュレータによって異なります。

xtermexecvp(2)与えられた引数を使用して最初に呼び出されますが、失敗して引数が-e続く場合も試みられます。command-e$SHELL -c command

mlterm失敗するとrxvtエラーが発生しますexecvp

2番目の段落に説得力がない場合は、次のことを試してください。

$ mkdir /tmp/tbin; ln -s /usr/bin/vi '/tmp/tbin/echo hello; sleep 5'
$ PATH=$PATH:/tmp/tbin xterm -e 'echo hello; sleep 5'

それとも見てください源泉

おすすめ記事