Почему я должен исходить из .bashrc каждый раз, когда открываю терминал для работы псевдонимов? [Дубликат]

25

Я добавил эту строку в мой ~/.bashrcфайл.

alias myserver='ssh davidfaux@davidfaux.com'

Однако, когда я открываю терминал и запускаю myserver, терминал жалуется, что

-bash: myserver: command not found

Однако когда я получаю исходный файл .bashrc ( . .bashrc), псевдоним работает.

Тем не менее, я не хочу получать файл каждый раз, когда открываю терминал для работы с псевдонимом. Как мне это сделать?

Дэвид Фокс
источник
3
Этот комментарий объясняет причину этого. Этот вопрос говорит вам, как это исправить.
ughoavgfhw
Большое спасибо! Я не знал, что при запуске оболочки эти файлы выполняются по порядку. Действительно, добавляя . .bashrcв .bash_profileпроизведения.
Дэвид Фокс
@ughoavgfhw может / вы должны изменить свой комментарий на ответ? Таким образом, это может быть отмечено как ответ.
Соксман

Ответы:

25

Короче говоря, вы помещаете свои псевдонимы в неправильный файл .bashrc, поэтому вам нужно продолжать запускать исходный код, чтобы псевдонимы работали в любых новых экземплярах терминала входа в систему.

Из комментария Криса Джонсена в. Почему .bashrc не запускается автоматически?

По умолчанию Терминал запускает оболочку через / usr / bin / login, что делает оболочку оболочкой входа в систему. На каждой платформе (не только Mac OS X) bash не использует .bashrc для оболочек входа в систему (только / etc / profile и первый из .bash_profile, .bash_login, .profile, который существует и доступен для чтения). Вот почему «поместите source ~ / .bashrc в ваш .bash_profile» - это стандартный совет.

Для получения дополнительной информации см. Страницу руководства для bash:

man bash

Тогда посмотрите в разделе ПРИЗНАНИЕ.

MrDaniel
источник
Нужно ли перезагружаться, чтобы все заработало? Потому что я добавил source ~/.bashrcв свой .bash_profile, но я все еще сталкиваюсь с той же проблемой ...
Michiel
1
Нет, в большинстве случаев вам просто нужно открыть новое окно терминала, чтобы изменения вступили в силу, изменения вступят в силу только во вновь открытом окне.
MrDaniel
11

Вы всегда можете положить

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

в файл ~/.profileили ~/.bash_profileна Mac я думаю.

Оооо, вы могли бы просто положить свои вещи в .profileили .bash_profile.

Dylan
источник
Это отмечено в другом ответе - почему вы не уверены в этих вещах?
user151019
Пожалуйста, прочитайте этот очень похожий вопрос: apple.stackexchange.com/q/12993/22003 и добавьте туда любое улучшение.
Ден
@danielAzuelos Подождите; Вы хотите, чтобы я прокомментировал другую страницу или обновил свой ответ на основании другого вопроса?
Дилан
@ Марк, я просто думал в очень гипотетическом смысле - например, что, если чей-то конечный процесс не знал об источнике .profile? Их терминал, вероятно, не запустится с самого начала, но это все еще возможно .... как если бы кто-то взломал их / usr / bin / login или что-то в этом роде.
Дилан
→ Дилан: пожалуйста, прочитайте этот очень похожий вопрос: apple.stackexchange.com/q/12993/22003, и вы найдете ответ на свой вопрос «возможно?».
дан