Dmenuで起動された一部のプログラムは、実行後すぐに終了します。

Dmenuで起動された一部のプログラムは、実行後すぐに終了します。

dmenuを使用してvimbというWebブラウザを起動しようとします。コンテキストでは、vimbは私のお気に入りの最小限のブラウザですが、デフォルトではタブをサポートしていません。これを行うには、tabbedという2番目のアプリケーションを介して実行する必要があります。通常の端末インスタンスでは、次のようにうまく機能します。

tabbed vimb -e

ただし、dmenuを使用して同じコマンドを実行すると、すぐにウィンドウが開いて閉じます。

ちなみにこれを行うと、一部のスクリプト(dmenuも使用)が混乱します。たとえば、自分の設定を一覧表示するカスタムスクリプトがあり、そのうちの1つを選択して新しいターミナルインスタンスを開いて編集できます。このスクリプトは、dmenuで上記のコマンドを実行すると同様の動作を経験します。この場合、端末インスタンスを開いたがすぐに閉じます。

システムのどこで何が起こっているのかを確認できるかどうかわかりません。土地を売ることも/var/logs私にとってあまり役に立ちません。

ここにいる方の中で、この問題をどこから解決すべきかをご存知ですか?ずっと前に他のウィンドウマネージャで同じ問題があったことを覚えているので、これは本当だとは思わない。しかし、誰もがどう思うか知りたいです。

修正する:だから私が見ていないどのようなエラーが発生するのだろうかと思います。だからdmenuで以下を実行しました。

tabbed vimb -e >> ~/.foo

ただ…効果がありました。なぜこれが起こるのかを説明できる人はいますか?

答え1

何が起こっているのかは、コマンドがシェルで実行され、シェルがコマンドを実行した後にアプリケーションが終了することです。 '&' は、シェルが正常に存在するときにプロセスが終了しないように、プロセスをバックグラウンドに置くようにシェルに指示します。

まだ実行されていないタスク(設定の切り替え、ボリュームの変更など)では、これを行う必要はありません。あるいは、自分自身が悪魔化したり、すでにChromiumのように動作していることを検出できるアプリケーションの場合です。

この問題:nohup、disown、&の違い

「&」の仕組みとシェルでのジョブ制御についての詳細です。シェルでいくつかのテストも可能でなければなりません。

tabbed vimb -e

その後、同じシェルでCtrl + cと入力すると、プロンプトは表示されず、ウィンドウが閉じて新しいプロンプトが表示されます。

それでは、次のように入力してください。

tabbed vimb -e &

新しいシェルプロンプトが表示され、シェルを終了してもブラウザは終了しません。

(一部のシェル(例:zsh)はbashとは異なる方法で '&'を処理します。)

関連情報