web-dev-qa-db-ja.com

新しい端末を開き、この新しい端末のコマンドで指定されたセットを実行するためのコマンド構造は何ですか?

私はLinuxMint19.03を使用しています

まず第一に、私のこの質問が重複していると思われる可能性のある質問のほとんどを読んだことを保証できます。

さて、基本的にはターミナルウィンドウに何かを入力して新しいターミナルウィンドウを開き、コマンドを実行したいと思います。

このようなもの:

[the part I am asking of] "echo $PATH; read"

このコードは新しいターミナルを開く必要があり、$ PATH変数が表示され、読み取りはターミナルを停止するためだけのものです。

私は試した x-terminal-emulator -eまたはx-terminal-emulator -cまたは-xしかし、これを正しく行うことはできませんでした。同様の質問に対するこのSEのすべての回答は両方とも古い回答であり、-eまたは-xを使用していましたが、これらのオプションは非推奨であると記載されています。

それで、これを達成するための最も適切な方法は何ですか?

ありがとう。

2
muyustan

x-terminal-emulatorはそれ自体ではシェルを開始しません。これにより、実行可能ファイルのみが-eオプションで開始されます。

echoは実行可能ファイル(/bin/echo)として使用できますが、read内部コマンドとしてのbashbashなしでは失敗します。したがって、新しいウィンドウでの出力は、ウィンドウを開くよりも速く実行され、readが失敗すると、ウィンドウが表示される前に閉じられます。

これでうまくいきます:

x-terminal-emulator -e "bash -c 'echo $PATH; read'"

ここで、x-terminal-emulatorbashシェルを開始し、シェルはecho $PATH; readを実行します。 echoおよび特にreadbash内部コマンドとして使用できるようになったため、readコマンドは失敗せず、入力を待機します。これにより、ウィンドウが開いたままになります。キーが押されるまで。

3
bey0nd