web-dev-qa-db-ja.com

新しいターミナルとソーススクリプトを開く

仮想環境をアクティブにし、新しいターミナルでDjangoプロジェクト用にサーバーを実行するスクリプトを作成したいと思います。私のstartProject.shは:

#!/bin/bash
source virtualenv/bin/activate
python manage.py runserver

そして、私は現在の端末でこのスクリプトを実行できます:

source startProject.sh

スクリプトで開いた新しいターミナルでこれを行いたいです。

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x 'source startProject.sh'

私もこれを試しました。

#!/bin/bash
gnome-terminal --working-directory=/home/myname/project -x '#!/bin/bash\n source startProject.sh'

両方とも機能しません。どうして?他の質問を読みましたが、まだわかりませんでした。私は初心者なので、経験がないと仮定してください。

2
Heuyie

私の経験によると、コマンドは次のようになります。

gnome-terminal --working-directory='/home/<user>/project' -x bash -c "source startProject.sh; exec bash"

ノート:

  • --working-directory='/home/<user>/project'のパスは、スペースなどの特殊文字が含まれている場合に備えて、単一引用符で囲まれています。

  • オプション-xは次を意味します:execute-ターミナル内のコマンドラインの残り。

  • そして、私たちのコマンドはbash -c "<commands>"です。つまり、新しいbash Shellを実行します。これにより、いくつかの-c "<commands>"が実行されます。

  • セミコロン; == new lineで区切られた2つの<commands>があります。

  • 最初のコマンドsource startProject.shは、 スクリプトファイルのソース になります。

  • 2番目のコマンドexec bashには意味があります-現在のgnome-terminalウィンドウを開いたままにします。 別の可能なアプローチ があります。現在の場合、コマンドexec現在のプロセスイメージを新しいプロセスイメージに置き換えます-つまり、現在のプロセスであり、現在のPIDの下で新しい(bash)を実行します。

参考文献:

1
pa4080