仮想環境をアクティブにし、新しいターミナルで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'
両方とも機能しません。どうして?他の質問を読みましたが、まだわかりませんでした。私は初心者なので、経験がないと仮定してください。
私の経験によると、コマンドは次のようになります。
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
)を実行します。
参考文献: