gnome-terminal 転送パラメータをコマンドに実行し、コマンドウィンドウを開いたままにして対話型にする方法

gnome-terminal 転送パラメータをコマンドに実行し、コマンドウィンドウを開いたままにして対話型にする方法

これはxtermで動作します(参照https://unix.stackexchange.com/a/739977/119816)

xterm -e "echo hello; bash"

しかし、そうではありませんgnome-terminal。これを行う同等の方法は何ですかgnome-terminal

gnome-terminal -- "echo hello; bash"

このエラーが発生します。 ここに画像の説明を入力してください。

私はさまざまな引用方法を試しましたが、成功しませんでした。いくつかの試みは次のとおりです。

gnome-terminal -- "bash -c \"echo hello; bash\""
#
gnome-terminal -- /usr/bin/bash  /tmp/echo-hi

/tmp/echo-hihiをエコーするシェルスクリプトはどこにありますか?

そして他のいくつかの変形。

答え1

bash -c引用符には表示しないでください。

以下を試してください。

gnome-terminal -- bash -c "echo hello; bash"

私は次の例を使用しています:

gnome-terminal --window --title "neovim" -- sh -c "nvim"

これは単に「neovim」というタイトルの新しいgnome端末ウィンドウでnvimバイナリを実行します。sh私の場合は、shバイナリへのリンクだけですbash。したがって、基本的にここで必要なシェルバイナリを使用できます。

答え2

これは働きます:

gnome-terminal -- bash -c "echo hello; exec bash"

重要な点は次のとおりです。

  1. GNOMEはデュアルダッシュを使用して、--実行するコマンドとGNOME端末パラメータを区別します。

  2. 複数のコマンドを実行するには、理由を渡してbash -c実行する必要があります。echo hello; exec bashこんにちは出力してから、元のbashを対話型端末になる新しいbashに置き換えます。

関連情報