Как остановить команду внутри псевдонима от запуска при получении .bashrc?
Моя проблема: всякий раз, когда я открываю новое окно терминала, выполняется ~/.bashrc
, и выполняется эта часть этого элемента, описанная ниже, yolk -U | awk '{print $1}'
.
Это приводит к тому, что большинство моих новых окон имеют фразу "Нет новых пакетов в магазине сыров" наверху, и это предотвращает фактическое отображение приглашения, пока команда не закончится. Это может занять незначительное количество секунд на регулярной основе.
Мой вопрос: как я могу это остановить? Я не хочу, чтобы это выполнялось до тех пор, пока я не буду использовать псевдоним явно.
Внутри моего файла ~/.bashrc
у меня есть следующий alias
:
alias pipup="sudo pip install -U `yolk -U | awk '{print $1}'`"
Я использую это за пределами моего virtualenv для обновления глобальных пакетов, таких как pip
, setuptools
, virtualenv
, virtualenvwrapper
, yolk
, некоторые линтеры и пароли cli-утилиты.
Сам псевдоним отлично работает, и команда работает как ожидалось.
OS X 10.9.1 (хотя эта "проблема" существовала для меня с 10.6)
bash
3.2.51
Ответы
Ответ 1
Псевдоним должен быть в одинарных кавычках.
alias pipup='sudo pip install -U `yolk -U | awk "{print \$1}"`'
То, что вы сообщаете как "работающее", делало не так: все работает yolk
при входе в систему, а псевдоним заканчивается тем, что выглядит как
alias pipup='sudo pip install -U fnord'
который вы должны проверить, просмотрев вывод из alias pipup
.
Оборудование для цитирования часто плохо понимается, хотя система не очень сложна или удивительна. См. http://mywiki.wooledge.org/Quotes
Как отмечено @devnull в комментарии, функция оболочки будет лучшим решением в целом. Псевдонимы имеют исторический дедвейт.