2

Использование "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 ответ1

0

workon это функция. Определение функции является локальным для оболочки и не отображается в подоболочках (так же, как определения переменных).

Вам нужно экспортировать функцию, если вы хотите, чтобы она была видимой в подоболочках. Со страницы руководства по bash:

export [-fn] [name[=word]] ...

export -p

Предоставленные имена помечаются для автоматического экспорта в среду последующих выполненных команд. Если задана опция -f , имена относятся к функциям. Если имена не указаны или указана опция -p список имен всех экспортируемых переменных. Опция -n приводит к удалению свойства экспорта из каждого имени. Если за именем переменной следует =word , значение переменной устанавливается в слово. export возвращает состояние выхода 0, если не обнаружена неверная опция, одно из имен не является допустимым именем переменной оболочки, или -f предоставляется с именем, которое не является функцией.

Поэтому export -f workon после определения функции решит ваши проблемы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .