ターミナルエミュレータは常にシェルを介して間接的にプログラムを実行しますか?
たとえば、ターミナルエミュレータウィンドウを開くと、自動的にシェルが実行され、シェルにはコマンドのみを入力できます。
たとえば、次のように端末エミュレータから直接プログラムを実行すると、
xterm -e "echo hello; sleep 5"
xterm
プログラムはシェルを介して間接的に実行されますか、それともシェルを使用せずに直接実行されますか?
ベストアンサー1
端末エミュレータによって異なります。
xterm
execvp(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'
それとも見てください源泉。