Как я могу выполнить "источник, активируются" из сценария удара как-e аргумент терминалу гнома?
gnome-terminal -e ". /path/to/virtualenv/bin/activate"
Когда я выполню эту команду, я ожидаю новый терминал, который имеет команду source activate
уже выполненный. Но вместо этого, я получаю ошибку и в текущем окне и в недавно созданном: Ошибка: Не удалось выполнить дочерний процесс "." (Отклоненное разрешение)
Я чувствую, что делаю простой контроль или неправильно понимаю-e аргумент, возможно.
Выполнение команды в сценарии удара или окне терминала дает тот же результат. sudo
дает тот же результат, таким образом, я думаю, что проблема разрешения указывает, что я не делаю то, что я думаю, что делаю с командой выше.
Поэтому .
(source
) встроенная оболочкой т.е. определенная для оболочки команда, не внешняя. Необходимо выполнить его в оболочке; Без оболочки, gnome-terminal
пытается выполнить литерал .
команда с /path/to/virtualenv/bin/activate
как ее аргумент, ведя к ошибке денье разрешения.
необходимо породить интерактивную оболочку, чтобы сделать определение источника и породить другую интерактивную оболочку впоследствии:
gnome-terminal -e 'bash -ic ". /path/to/virtualenv/bin/activate && bash"'
Как Вы пытающийся инициировать виртуальную среду, Вы могли бы хотеть установить --rcfile
опция вместо этого, более чистый подход, но очевидный протест состоит в том, что общие файлы /etc/bash.bashrc
и ~/.bashrc
запуска сессии не читаются:
gnome-terminal -e 'bash --rcfile /path/to/virtualenv/bin/activate'