bash -c "workon" return: "команда не найдена"
Использование "workon" в bash приводит к выводу списка в envs.
bash> workon
project_1
При попытке через bash -c возвращается ошибка.
bash> bash -c "workon"
bash: workon: command not found
Редактировать 1: Больше информации по комментарию
bash> type workon
workon is a function
workon ()
{
virtualenvwrapper_load;
workon "$@"
}
1 ответ
workon
это функция. Определение функции является локальным для оболочки и не отображается в подоболочках (так же, как определения переменных).
Вам нужно экспортировать функцию, если вы хотите, чтобы она была видимой в подоболочках. Из справочной страницы для bash
:
export [-fn] [name[=word]] ...
export -p
Предоставленные имена помечаются для автоматического экспорта в среду последующих выполненных команд. Если
-f
опция дается, имена относятся к функциям. Если имена не указаны или если-p
предоставляется опция, выводится список имен всех экспортируемых переменных.-n
опция вызывает удаление свойства экспорта из каждого имени. Если за именем переменной следует=word
, значение переменной установлено в слово.export
возвращает состояние выхода 0, если не обнаружена недопустимая опция, одно из имен не является допустимым именем переменной оболочки, или -f предоставляется с именем, которое не является функцией.
Следовательно export -f workon
после определения функции решит ваши проблемы.