Почему я должен исходить из .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

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


Нужно ли перезагружаться, чтобы все заработало? Потому что я добавил 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.


Это отмечено в другом ответе - почему вы не уверены в этих вещах?
user151019

Пожалуйста, прочитайте этот очень похожий вопрос: apple.stackexchange.com/q/12993/22003 и добавьте туда любое улучшение.
Ден

@danielAzuelos Подождите; Вы хотите, чтобы я прокомментировал другую страницу или обновил свой ответ на основании другого вопроса?
Дилан

@ Марк, я просто думал в очень гипотетическом смысле - например, что, если чей-то конечный процесс не знал об источнике .profile? Их терминал, вероятно, не запустится с самого начала, но это все еще возможно .... как если бы кто-то взломал их / usr / bin / login или что-то в этом роде.
Дилан

→ Дилан: пожалуйста, прочитайте этот очень похожий вопрос: apple.stackexchange.com/q/12993/22003, и вы найдете ответ на свой вопрос «возможно?».
дан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.