Как остановить команду внутри псевдонима от запуска при получении .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 в комментарии, функция оболочки будет лучшим решением в целом. Псевдонимы имеют исторический дедвейт.