2011-08-03 19 views
7

私はスーパーシンプルなbashスクリプトを書く必要があります。基本的に仮想envを有効にして、作業ディレクトリを変更します。私は多くのことをやっていて、1つのコマンドに満足しているだけの仕事は意味がありました。VirtualEnvはbashスクリプトから起動されました

それは実行時に基本的には...

#!/bin/bash 
source /usr/local/turbogears/pps_beta/bin/activate 
cd /usr/local/turbogears/pps_beta/src 

は、しかし、それだけでバックシェルにダンプと私は、スクリプトを実行し、環境が起動されていないディレクトリに残っています。

答えて

20

あなたがする必要があることは、sourceコマンドでスクリプトを実行することだけです。これは、cdコマンドが実行されているシェルにとってローカルなためです。スクリプトを直接実行すると、スクリプトのファイルの終わりに達すると終了する新しいシェルが実行されます。 sourceコマンドを使用すると、シェルがスクリプトの指示を直接実行するように指示します。

+0

。 –

+0

正確に私が必要としたもの。タイマーが消えると直ちにそれをマークします。 – Ominus

1

cdの値は、現在のスクリプトのローカルです。これは、ファイルの末尾に来ると終了します。

この動作を無効にしたいので、あなたがしようとしているのは「スーパーシンプル」ではありません。

execをご覧ください。現在のプロセスをお好みのプロセスに置き換えてください。

対話型Bashにコマンドを入力する場合は、--rcfileオプションを参照してください。

1

私はあなたのスクリプトを動的にしたいと思っています。しかし、新しいシステムで作業するときに、エイリアスを作成するための迅速な修正が必要です。

ENVは、〜/ projの/ PY1/

別名PY1 = 'ソースでリポジトリ 場所で〜/ ENVS/PY1 /にある[PY1」と呼ばれる〜/すなわち開始しますenvs/py1/bin/activate; cd〜/ proj/py1 /;

エンドすなわち

あなたは今、どこにでもCLIでからPY1を入力して、あなたのプロジェクトとvirtualenvのにアクセスすることができます。

私はこれが理想に近い場所ではなく、DRYに違反していることを知っています。変数を設定しなくても、envやプロジェクトに素早くアクセスできるようにすばやく簡単な方法です。

1

私はここでゲームに遅れていることを知っていますが、virtualenvwrapperを使用することをお勧めしますか?それはあなたが望むものをまさに行うように見える素晴らしいbashフックを提供します。

このチュートリアルをチェックアウト:ところで、あなたはあなた自身のスクリプトで「ソース」を使用している理由である、http://blog.fruiapps.com/2012/06/An-introductory-tutorial-to-python-virtualenv-and-virtualenvwrapper

+1

リンクは有効期限が切れています – blissini

関連する問題