私のArch Linuxボックスには次のスクリプトがあります。
#!/bin/bash
xterm -e "sudo pacman -Syu;bash"
これで xterm が起動し、sudo pacman -Syu
コマンドが実行されます。この部分のため、;bash
コマンドが完了してもxtermウィンドウは閉じません。これは私のシステムを更新するために使用されるコマンドであり、出力を見たいのでシステムがシャットダウンしたくありません。
これが他の端末、特にlxterminalとroxterm(私が試した唯一の他の端末)では機能しないのはなぜですか?lxterminal
代わりに使用されたのとroxterm
同じコマンドはxterm
端末を起動し、コマンドが実行されるとすぐに端末を閉じます。
ベストアンサー1
エミュレータごとに機能を開いたままにするための機能とプロトコルが異なります。何人かの人々はそれをしなかったりすることができません。他のものには、エミュレータが開いたままであることを指定するスクリプトが必要です。 HDSentinelというプログラムの簡単なスクリプトの作成中にこの問題が発生しました。私が考えることができるさまざまなソリューションは次のとおりです。
KDE(コンソールエミュレータ)
konsole -hold -e sudo ./HDSentinel
(-hold
必須パラメータです)
啓蒙(学期シミュレータ)
terminology --hold -e "sudo ./HDSentinel"
(--hold
必須パラメータです)
XFCE(XFCE4 エミュレータ)
xfce4-terminal -H -x "sudo ./HDSentinel"
(-H
必須パラメータです。)
編集:xfce端末で-eの代わりに-xを使用してください。
Mate(同伴端末エミュレータ)
mate-terminal --window-with-profile=HoldOpen -e "sudo ./HDSentinel"
(このエミュレータを使用する前に、エミュレータを開いたままにするためのカスタム設定ファイルを作成する必要があります。HoldOpenと呼びますが、どの名前でも構いません)
Gnome(Gnomeターミナルエミュレータ)
gnome-terminal --window-with-profile=HoldOpen -e "sudo ./HDSentinel"
(Mateと同じように動作します。プロファイルを作成してエミュレータを開きます)
LXDE(lx端子)
LXDEに付属のエミュレータは、端末を開いたままにすることをlxterminal
サポートしていません。
したがって、結論は、一部のエミュレータはオープン状態の維持をサポートし、一部はサポートしていないということです。これを行うと、その機能を有効にする方法が異なります。ここにリストされていないエミュレータを見ている場合は、そのエミュレータでGoogle検索を実行して、Keep-Onを有効にするかどうかを確認する必要があります。
使用しているエミュレータが開いたままをサポートしていない場合は、ディストリビューションにそれをサポートする代替エミュレータが含まれていることがわかります(多くのディストリビューションにはxtermおよびデスクトップバージョンエミュレータが含まれています)。オープンメンテナンスをサポートするエミュレータがない場合は、いつでもソフトウェアストアから入手できます。
この情報はかなりの研究時間を意味するので、これが人々の時間と欲求不満を減らすのに役立つことを願っています。ちなみに、xtermもこのパラメータを使用するので、これはkeep-open機能のパラメータを提供するkeep-openエミュレータに役立ちます-hold
。;bash
ただし、エミュレータがこの機能をサポートしていない場合(lxterminalの場合)、エミュレータがオープンコンフィギュレーション機能を有効にするためにカスタム設定ファイルを使用している場合(たとえば、lxterminalの場合)、オープンステートメンテナンス機能は生成されません。 Gnome)、Keep-Open機能は有効になっていません。機能をオンにします。