Чому я повинен надсилати джерело .bashrc кожного разу, коли я відкриваю термінал для роботи псевдонімів? [дублікат]


25

Я додав цей рядок у свій ~/.bashrcфайл.

alias myserver='ssh davidfaux@davidfaux.com'

Однак, коли я відкриваю термінал і запускаю myserver, термінал скаржиться на це

-bash: myserver: command not found

Однак, коли я надсилаю файл .bashrc, ( . .bashrc), псевдонім працює.

Тим не менш, я не хочу передавати файл кожного разу, коли я відкриваю термінал, щоб псевдонім працював. Як мені це зробити?


3
Цей коментар пояснює причину цього. Це питання говорить вам, як це виправити.
ughoavgfhw

Дуже дякую! Я не знав, що запуск оболонки виконує ті файли в порядку. Дійсно, додавання . .bashrcдо .bash_profileтворів.
David Faux

@ughoavgfhw може / слід змінити коментар до відповіді? Таким чином він може бути позначений як відповідь.
soxman

Відповіді:


25

Коротше кажучи, ви додаєте псевдоніми в неправильний файл .bashrc, тому вам потрібно продовжувати працювати джерелом, щоб псевдоніми працювали в будь-яких нових екземплярах терміналів входу.

З коментаря Кріса Джонсена на " Чому .bashrc не працює автоматично?

За замовчуванням Terminal запускає оболонку через / usr / bin / login, що робить оболонку оболонкою для входу. На кожній платформі (не тільки Mac OS X) bash не використовує .bashrc для оболонок входу (лише / etc / profile та перший з .bash_profile, .bash_login, .profile, який існує та читається). Ось чому "помістити джерело ~ / .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 я думаю.

Oooor, ви можете просто помістити свої речі в .profileабо .bash_profile.


Це відмічено в іншій відповіді - чому ви не впевнені в цих речах?
користувач151019

Будь ласка, прочитайте це дуже схоже запитання: 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.