私は大企業のソフトウェア分野で働いており、使用している全体的な技術に対する制御力がほとんどないため、私が持っている制約内で動作するソリューションを探す必要があります。
私がしていること:私は、ユーザーが作業しているプロジェクトに基づいて特定の環境でkonsoleを起動できるUIを開発しています。現在、ユーザーが多数のパラメータを使用してKonsoleで手動で実行できるコマンド(「setContext」と呼ばれる)があります。 setContext は多くの操作を行い、多くの環境変数を設定します。制限の一部として konsole、tcsh、および setContext コマンドを使用する必要があります。私のUIでやるべきことは、正しいパラメータを使用してsetContextコマンドを作成し、konsoleを開き、ユーザー制御後にユーザーのためにコマンドを実行することです。
私が生成するコマンドは次のとおりです。
konsole -e tcsh -c "setContext --someArgs"
この方法は機能しますが、すぐにコンソールを閉じます。--noclose
konsoleを起動するときにこのオプションを使用すると、開いているが対話型ではないままにできます。
この問題に対して一般的に受け入れられる解決策は、;bash
コマンドの最後にまたはを追加することです。私の場合は。;$SHELL
;tcsh
これは、次のリンクや他の多くのリンクで提案されています。
- https://askubuntu.com/questions/20330/how-to-run-a-script-without-fitting-the-terminal/1209836#1209836
- https://askubuntu.com/questions/46627/how-can-i-make-a-script-that-opens-terminal-windows-and-executes-commands-in-the
- 端末でコマンドを実行し、追加のコマンドを入力します。
- https://askubuntu.com/questions/484993/run-command-on-anothernew-terminal-window
これはコンソールを開いたままにしておくため、ほとんど機能します。実際、これは何週間も問題なく使用されてきましたが、tcsh
すべての初期化ファイル(〜/ .cshrcなど)を再インポートして実行した後にこれがリセットされることがわかりました。setContext
setContext
これは何百人ものユーザーを対象として機能し、cshrcファイルを制御できないため、ファイルを再インポートせずにkonsoleを開いたままにする方法を見つける必要があります。試してみましたが、tcsh -f
環境を保護しません。
午後を通してオンラインで検索しましたが、解決策が見つかりませんでした。環境とコマンドを理解していますが、専門家ではなく、主にPythonで作業しています。私が見つけたすべてが上記の回答の災害時であるか、cshrcファイルの修正が必要であるか、私のレベルよりはるかに高いので復号化できないので、ここに尋ねます。
よろしくお願いします。
答え1
すべての初期化ファイル(など)を再インポートして実行します
tcsh
。setContext
~/.cshrc
setContext
環境変数を元の値にリセットしたものを含む別のディレクトリに指定し、tcsh
ユーザーのまたはをインポートしてから。~/.cshrc
HOME
.cshrc
HOME
~/.tcshrc
~/.cshrc
setContext
たとえば、/fake/home
おとり用のホームディレクトリとして使用するには、次のようにします。
konsole -e sh -c 'REAL_HOME=$HOME HOME=/fake/home exec tcsh'
含む/fake/home/.cshrc
:
setenv HOME "$REAL_HOME"
if (-f ~/.tcshrc) then
source ~/.tcshrc
else if (-f ~/.cshrc) then
source ~/.cshrc
endif
setContext
# other aliases and initializations
はい、それはひどいパッチワークです。より良いものを探してください;-)
答え2
私と同じ状況で他の人のために共有したい可能な解決策は、qdbus
別のkonsoleインスタンスを使用してコマンドを送信することです。
私の場合、Konsoleのpidを知る必要があるので、やや複雑かもしれませんが、うまくいきました。
- https://docs.kde.org/stable5/en/applications/konsole/scripting.html
- https://www.linuxjournal.com/content/start-and-control-konsole-dbus
私はuser431397のメソッドを使うことになると思います。なぜなら、qdbusはしばしばコマンドを送信すると警告を表示するからです。警告は再コンパイルして削除できますが、それは私ができることではなく、警告は私を迷惑にさせます。
私もdbusを調べて知りましたが、ここにインストールされることがわかっていますがyakuake
、konsoleよりqdbusで制御する方が簡単です。