Где найти файл .bashrc в Mac OS X Snow Leopard и Lion?

89

Я хочу установить rvm на мою машину Snow Leopard.

Там написано, что мне нужно добавить строку в мой .bashrcфайл (я использую bash), но где мой .bashrcфайл?

Юваль
источник
1
Вы должны поместить свое решение в ответ и принять его (вам придется подождать день или два, прежде чем SU позволит вам это сделать). Таким образом, люди с одинаковой проблемой могут посмотреть на вопрос и увидеть, что у него есть ответ.
Нифл
1
Его решение ничем не отличается от ответа сверху.
Дэвид Кауден,
Просто чтобы убедиться, что это не проблема "Linux = .bashrc vs. Mac OS =. (Bash_) профиль", файлы запуска оболочки работают одинаково на Linux и Mac, и файл .bashrc является более подходящим местом для сессии конкретные настройки. вы используете, например, tmux или screen, у вас могут не быть сеансов входа в систему, но вы все еще хотите использовать свои псевдонимы. Причина, по которой Mac чувствует себя иначе, заключается в том, что большинство дистрибутивов Linux поставляют скрипты системного профиля или профили скелета, которые уже делегируют (исходный код) bashrc.
eckes

Ответы:

78

Что касается проблемы с .bashrcвыше:

В большинстве систем ~/.bashrcиспользуется только при запуске интерактивной оболочки без регистрации . Однако, когда вы запускаете новую оболочку, она часто представляет собой интерактивную оболочку входа в систему . Поскольку это оболочка входа в систему , .bashrcона игнорируется. Чтобы обеспечить согласованность среды между не входящими в систему и входящими в нее оболочками, вы должны получить исходный код .bashrcиз своего .profileили своего .bash_profile.

См. Справочное руководство по Bash, раздел 6.2.

Вызывается как интерактивная оболочка для входа или с --login

Когда Bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла / etc / profile, если этот файл существует. После прочтения этого файла он ищет ~ / .bash_profile, ~ / .bash_login и ~ / .profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения.

Вызывается как интерактивная оболочка без авторизации

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

Итак, обычно ваш ~ / .bash_profile содержит строку

   if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

после (или до) любых специфичных для входа инициализаций.

На моем Mac (под управлением Leopard) не было никакой строки для источника ~/.bashrc. Я должен был добавить эту функциональность самостоятельно.

В некоторых системах и других операционных систем, .bashrcдобыт из глобального /etc/profileили /etc/bash_profile, или это делается с помощью файлов шаблонов с /etc/skel.

Чтобы быть честным, различие между .bashrcи .bash_profileне очень хорошо понято сообществом. Когда многие разработчики говорят «Добавить это в ваш .bashrc», они действительно имеют в виду «Добавить это в ваш .bash_profile». Они хотят, чтобы функциональность была добавлена ​​в вашу оболочку входа в систему (которая есть .bash_profile), а не в вашу оболочку без регистрации . В действительности это обычно не имеет значения, и размещение конфигурации .bashrcприемлемо.

Стефан Ласевский
источник
Эта ссылка дает хороший обзор типов оболочек и когда загружаются файлы запуска - hacktux.com/bash/bashrc/bash_profile
studgeek
Что подразумевается под "источником" здесь?
elgrego
@elgrego, вот хорошее описание: Когда файл получен из источника (введя имя исходного файла или. filename в командной строке), строки кода в файле выполняются так, как если бы они были напечатаны в командной строке. См. Tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Стефан Ласевский
60

Получается, что в Mac OS X Snow Leopard, а также в Mac OS X Lion загружаемый файл называется .profile, а не .bashrc.

Что вы хотите сделать, это создать файл ~/.profileи назвать его .profile (если он еще не существует).

Поместите туда любую информацию, которая вам нужна для загрузки каждого экземпляра bash (спасибо, thepurplepixel).

Пара примечаний:

  1. Точка перед файлом помечает его как невидимый для Finder и команды ls по умолчанию. Чтобы вывести список невидимых файлов с помощью команды ls из терминала, используйте -aкак параметр как так:ls -a
  2. ~Символ обозначает , /Users/YourUserNameгде YOURUSERNAME является короткое_имя ваше имя пользователя в.

Редактировать: Крис Пейдж отмечает (правильно), что все, что вы поместите в файл .profile, будет применяться к любой оболочке, которую вы используете (например, zhs, bash, и так далее). Если вы хотите, чтобы содержимое влияло только на оболочку bash, поместите содержимое в .bash_profileфайл, а не в .profileфайл.

Юваль
источник
5
На ваш вопрос ответили [правильно] 1 июня 2010 года - через день после того, как вы его задали. Спустя год вы вернетесь и предоставите точно такой же ответ и примете свой собственный ответ ...
Дэвид Кауден,
3
На самом деле его ответ добавляет больше подробностей, чем ответ, полученный 1 июня 2010 года. Он специально рассматривает проблему в Mac OS X, которая мне показалась полезной.
веб-червь
3
Обратите внимание: если файл .bash_profileуже существует в вашем домашнем каталоге, .profileфайл не будет прочитан!
Фани
У меня свежая установка Mac Os El capitan. Там нет файла профиля . Просто создайте файл .profile, и он работает. Я лично переименовал мой .bashrc в .profile.
Николас Тери
4

Вы должны сделать свой собственный .bashrc. Вы можете просто использовать текстовый редактор, чтобы создать файл с именем .bashrc(без расширения) с нужным вам содержимым и сохранить его в своем домашнем каталоге ( /Users/YourUserName/).

squircle
источник
1
на самом деле, это не сработало, но вы отправили меня в правильном направлении, сказав мне сделать мой собственный файл. Файл, который работал в конфигурации Snow Leopard, был .profile, а не .bashrc (который по какой-то причине не загружен в этой ОС). Я выложу подробные инструкции в вопросе. Спасибо!
Ювал
@Yuval: по умолчанию, a .bashrcбудет работать, но только если нет .profile. Я думаю, ~/.profileсуществует по умолчанию, хотя. Рад, что смог помочь! (И вы должны поставить свое решение в ответ и принять его для будущих читателей этого вопроса).
Squircle
Я думаю, что ваш комментарий о том, только если нет .profile является неправильным. .bashrc будет работать в интерактивной оболочке, не входящей в систему, или, если он получен из .profile (вероятно, лучше использовать .bash_profile, поскольку .profile - для оболочки Bourne). .profile используется во время интерактивной оболочки без входа в систему.
Стефан Ласевский
@Stefan Это звучит правильно, тогда. Я не эксперт :)
Squircle
2
Никто не является ;). Этот материал (.bashrc против .profile против .bash_profile против .bash_login против интерактивной оболочки входа в систему против интерактивной оболочки без входа в систему и неинтерактивной оболочки) сбивает с толку, и он нарушается и переопределяется многими Unixes и сценариями оболочки.
Стефан Ласевский
3

Я обнаружил, что в моей ОС 10.6.5 настройки bash находятся в "/ etc / bashrc". Я думаю, что это спецификации верхнего уровня для оболочки.

Однако для его изменения вам нужна учетная запись root. Локальные спецификации для каждого пользователя «~ / .bashrc» должны начинаться со следующего фрагмента, чтобы прочитать и загрузить настройки bash на системном уровне:

if [ -r /etc/bashrc ]; then
    . /etc/bashrc 
fi

Обычно я добавляю псевдонимы на системном уровне bashrc, чтобы все пользователи могли получить к ним доступ. Если только они не хотят использовать ваши ярлыки и псевдонимы.

Удачи!

geekborj
источник
2
/ etc / profile (запускается с помощью оболочек входа в систему) - это глобальный сценарий запуска bash, который применяется ко всем пользователям и обеспечивает поведение по умолчанию для оболочек входа в систему. В свою очередь, он запускает / etc / bashrc, который содержит настройки, которые применяются как к входящим, так и не входящим в систему оболочкам. Аналогичным образом, отдельные пользователи должны создать файл ~ / .bash_profile, который запускает ~ / .bashrc, где и должно быть большинство настроек, а ~ / .bashrc должен запустить / etc / bashrc для наследования поведения по умолчанию для оболочек без входа в систему.
Крис Пейдж
1
Для отдельных пользователей лучше всего добавлять эти настройки в свой домашний каталог ~/.bashrc, а не /etc/bashrc. /etc/bashrcэто глобальные настройки для всех пользователей вашей системы, что, вероятно, не то, что вам нужно. Кроме того, Apple может /etc/bashrcпериодически приходить и меняться , что может сдуть ваши настройки.
Стефан Ласевский
1

Используйте файл .profile, чтобы добавить все, что вы хотели бы добавить в файл linux .bashrc.

Например

PATH=/System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Resources/:/opt/local/bin:/opt/depot_tools/:~/bin:$PATH
alias t='/Users/<username>/.todo/todo.sh'
alias punch='python /Users/<username>/.todo/Punch.py'
alias clock='cat </dev/tcp/time.nist.gov/13'
alias sudotext="sudo /Applications/TextEdit.app/Contents/MacOS/TextEdit" 
скорость изображения
источник
2
Я рекомендую вам использовать ~ / .bash_profile (вместо ~ / .profile), если вы не уверены, что хотите, чтобы ваши настройки вступили в силу в других оболочках и чтобы они были совместимы.
Крис Пейдж
Просто чтобы убедиться, что это не проблема "Linux = .bashrc vs. Mac OS =. (Bash_) профиль", файлы запуска оболочки работают одинаково на Linux и Mac, и файл .bashrc является более подходящим местом для сессии конкретные настройки. вы используете, например, tmux или screen, у вас могут не быть сеансов входа в систему, но вы все еще хотите использовать свои псевдонимы. Причина, по которой Mac чувствует себя иначе, заключается в том, что большинство дистрибутивов Linux поставляют скрипты системного профиля или профили скелета, которые уже делегируют (исходный код) bashrc.
eckes