web-dev-qa-db-ja.com

bashシェルから新しいbashシェルを開始する

Bashシェルからプログラムを実行したいのですが。プログラムが実行されると、それがシェル全体を支配するので、新しいシェルを起動して、そこからプログラムを実行したいと思います。現在私はやっています:

gnome-terminal -x "cd Dropbox; program_name"

しかし、それは私に子プロセスを実行できませんでしたというエラーを与えます、そのようなファイルやディレクトリはありません。新しい端末には初期化する時間がないためだと思います。どうすれば修正できますか?

14
providence

これはあなたの質問に実際に答えることはできませんが、私はそれがあなたの問題を解決すると思います。

なぜ&をバックグラウンドに送信します。 jobsで実行されているかどうかを確認し、fgでフォアグラウンドに戻すことができます。最初にCtrl+Z次にbg

試す例。

> sleep 20 &
> jobs
> fg [jobNumber]
[Ctrl-Z]
> jobs
> bg [jobNumber]
> jobs
9
tjm

試してください:

bash -c 'gnome-terminal -x cd /absolute-path && program_name'
9
lukasz

gnome-terminalを呼び出す前に、プログラムへの絶対パスまたはcdを使用してください。そして、あなたはそれをバックグラウンドに置くために&が必要です。

cd Dropbox; gnome-terminal -x "program_name" &
1
Kim Stebel

screen を試してください。あなたが同時に複数のシェルを追跡することを可能にするそのシンプルなブログラム。開いている各シェルをナビゲートし、セッションを終了して後で再接続することもできます。

1
grundprinzip

コマンドの最後に「&」を追加してみてください。例:

gnome-terminal &

Gnome-terminalで動作するかどうかはわかりませんが、mrxvtで問題なく動作しました。

0
patapizza
/bin/bash -c "/path/to/prog"

ただし、sleepコマンドも調べてください。

0
user686605