Mac OS X .bashrc не работает


78

У меня есть однострочный .bashrcфайл в моем домашнем каталоге:

alias countlines='find . -type f -print0 | xargs -0 cat | wc -l'

Но это не создает псевдоним. Почему это может быть?

Ответы:


102

В OSX .bash_profileиспользуется вместо .bashrc.

И да, .bash_profileфайл должен находиться в /Users/YourName/
(другими словами, ~/.bash_profile)

Например, /Users/Aaron/.bash_profile


11
Это не правильный ответ. Псевдонимы не наследуются, поэтому, если вы определите их только в .bash_profile, они не будут определены в оболочках, отличных от входа в систему (например, когда вы запускаете bash внутри bash).
LaC

1
Или можно использовать bash_aliases, который имеет тот же эффект, что и размещение псевдонимов в bashrc, но более управляемый: ss64.com/osx/syntax-bashrc.html
Atul Ingle

4
в моем .bash_profile я только что написал одну строку для псевдонима (вроде) bashrc ->source ~/.bashrc
Эрик Ходонски

87

.[bash_]profileи .bashrcможет использоваться как в OS X, так и в Linux. Первый загружается, когда оболочка является оболочкой входа в систему; последний, когда это не так. Реальное отличие состоит в том, что Linux запускает оболочку входа в систему, когда пользователь входит в графическую сессию, а затем, когда вы открываете терминальное приложение, эти оболочки являются оболочками, не входящими в систему; тогда как OS X не запускает оболочку при графическом входе в систему, а когда вы запускаете оболочку из Terminal.app, это оболочка входа в систему.

Если вы хотите, чтобы ваши псевдонимы работали как в логинах, так и в не-логинах (как вы обычно это делаете), вы должны поместить их в .bashrc и source .bashrc в ваш .bash_profile, с помощью строки, подобной этой:

[ -r ~/.bashrc ] && source ~/.bashrc

Это относится к любой системе, использующей bash.


15
+1 с предупреждением, что все в .bashrc будет снова запущено для подоболочек (и subub-, subsubsub- и т. Д.), Поэтому, например PATH=$PATH:/my/private/binaries, приведет к раздутию PATH. Смотрите это для обхода.
Гордон Дэвиссон

2
Правда. Поскольку экспортируемые переменные экземпляра наследуются, я просто устанавливаю их .profileвместо .bashrc.
LaC

1
@LaC вы можете объяснить, _ поскольку экспортируемые переменные экземпляра наследуются, я просто установил их в .profile_…?
Сэм

1
@ Сэм, я не знаю, откуда взялся «экземпляр». Я просто имел в виду "экспортируемые переменные". К сожалению, я не могу редактировать этот комментарий.
LaC

2
@dinosaur: "-r" проверяет, доступен ли файл для чтения.
mhvelplund

7

Или создайте символическую ссылку с именем .bash_profile, указывающую на ваш .bashrc

ln -s .bashrc .bash_profile

2

Это не псевдоним, потому что .bash_profileиспользуется вместо .bashrcMac OS X.

Итак, у вас есть два варианта:

  • Поместите псевдоним в свой ~/.bash_profile

  • Или источник вашего .bashrcот вашего .bash_profile, добавив эту строку в .bash_profile:

    . ~/.bashrc


1

В Mac OS X Yosemite выполните следующую команду:

vi ~/.profile

Затем добавьте следующую строку:

source ~/.bashrc

Теперь сохраните и закройте .profile, затем откройте новое окно терминала или просто запустите:

source ~/.profile

Смотрите также этот ответ . Работало на v10.10.3.


Это немного больше, чем перефразировка ответов четырехлетней давности.
G-Man говорит: «Восстанови Монику»

Конечно, просто легко читать и применять его. Плюс небольшой вклад - так как другие упомянутые файлы не были доступны на моей ОС Yosemite.
Рикардо
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.