Виртуальное окружение initilaized из bash-скрипт

Я пытаюсь написать то, что должно быть супер простым скриптом bash. В основном активируйте виртуальный env, а затем перейдите в рабочий каталог. Задачу я делаю много и condesing одной команде просто имело смысл.

в основном ...

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

однако, когда он запускается, он просто сбрасывает обратно в оболочку, и я все еще в каталоге, из которого я запустил сценарий, и среда не активирована.

4 ответов


все, что вам нужно сделать, это запустить скрипт с помощью команды source. Это связано с тем, что команда cd локальна для оболочки, которая ее запускает. При непосредственном запуске скрипта выполняется новая оболочка, которая завершается, когда она достигает конца файла скрипта. Используя команду source, вы сообщаете оболочке напрямую выполнять инструкции сценария.


значение cd является локальным для текущего скрипта, который заканчивается, когда вы падаете с конца файла.

то, что вы пытаетесь сделать, не "супер просто", потому что вы хотите переопределить это поведение.

посмотреть exec заменить текущий процесс с процессом выбора.

для подачи команд в интерактивный Bash, посмотрите на .


Я полагаю, вы хотите, чтобы ваш сценарий был динамическим, однако, как быстрое исправление при работе над новой системой я создаю псевдоним.

начать я.е

env называется "py1", расположенный в ~ / envs / py1 / с репозиторием расположение в ~ / proj / py1/

ру1 псевдоним='источник ~/envs/ру1/Бен/активировать; кд ~/прое/ру1/;

конец мне.е

теперь вы можете получить доступ к своему проекту и virtualenv, введя py1 из любой точки Кли.

Я знаю, что это не где-то рядом с идеалом, нарушает сухие и многие другие концепции программирования. Это просто быстрый и грязный способ быстро получить доступ к env и проекту без необходимости настройки переменных.


Я знаю, что опаздываю на игру здесь, но могу ли я предложить использовать virtualenvwrapper? Он обеспечивает хороший крюк bash, который, кажется, делает именно то, что вы хотите.

проверьте этот учебник: http://blog.fruiapps.com/2012/06/An-introductory-tutorial-to-python-virtualenv-and-virtualenvwrapper