В проекте django вы получаете скрипт с именем manage.py , в котором есть несколько подкоманд, таких как runserver , migrate и т.д. Вы можете получить их список, запустив скрипт без аргументов.
Мой план состоит в том, чтобы проанализировать этот вывод и использовать его для включения завершения TAB после . manage.py , а также настроить псевдонимы, так что я могу просто набрать migr[TAB] вместо ./manage.py migrate .
Моя проблема в том, что, поскольку это Python, и он должен загружаться во все механизмы django, чтобы показать подкоманды, я каждый раз жду около половины секунды в действительно маленьком проекте. Чем больше проект, тем больше времени занимает.
Моя идея состояла в том, чтобы запустить опрос сценария, определение псевдонимов и настройку автозаполнения в фоновом режиме а-ля
(for subcommand in parse_manage_py; do alias $subcommand='./manage.py $subcommand'; done) &
Но это не устанавливает никаких переменных в родительской оболочке. Я некоторое время разбирался с export , прежде чем понял, что экспорт идет "вниз", а не "вверх".
