xterm の起動時に複数のコマンドを起動させる2011年02月17日 13時01分53秒

xterm で -e を使うと xterm の起動と共にコマンドを実行できる。tail -f や top 等の、監視系のコマンドで良く使っている。

ふと複数のコマンドを実行したくなった。xterm -e "echo 1; echo 2; sleep 3" とやっても、一瞬で xterm が閉じてしまいエラーが読めない。そこでちょっと細工をして試す。

OS によってエラーが違うが、execuvp や exec が呼ばれる様だ。つまり、xterm は複数のコマンドを実行することは出来ないのが結論だ。xterm multiple commands を含めて幾つかの検索を見ても、即席で芳しい答えは見付からない。シェルスクリプトを書いて呼べば良いと言われても、一回毎に書いていたら、ゴミでディスクが溢れてしまう。

が、そこで終わっては楽しくない。

一つしかコマンドを実行できないのは事実なので、一つだけコマンドを実行する。起動するコマンドはもちろん sh。そして、-c で引数を与える。もちろん、引数は実行したい複数のコマンド。


% xterm -e sh -c "echo 3; echo 2; echo 1; sleep 3"

これで当初の目的は達成できた。これで、xterm の起動時に、sh を経由して任意の数のコマンドを実行できる。なお、この xterm は、3, 2, 1 を表示した後の三秒後に消える。