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 после определения функции решит ваши проблемы.