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

259955
Yuval

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

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

84
Вы должны поместить свое решение в ответ и принять его (вам придется подождать день или два, прежде чем SU позволит вам сделать это). Таким образом, люди с одинаковой проблемой могут посмотреть на вопрос и увидеть, что у него есть ответ. Nifle 13 лет назад 1
His solution is no different from the top voted answer.. David Cowden 11 лет назад 1
Просто чтобы убедиться, что это не проблема "Linux = .bashrc vs. Mac OS =. (Bash_) profile", файлы запуска оболочки работают одинаково на Linux и Mac, и файл .bashrc является более подходящим местом для сессии конкретные настройки. вы используете, например, tmux или screen, у вас могут не быть сеансов входа в систему, но вы все еще хотите использовать псевдонимы Причина, по которой Mac чувствует себя иначе, заключается в том, что большинство дистрибутивов Linux поставляют скрипты системного профиля или профили скелета, которые уже делегируют (исходный) bashrc. eckes 7 лет назад 0

5 ответов на вопрос

75
Stefan Lasiewski

Что касается проблемы с .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приемлемо.

Эта ссылка дает хороший обзор типов оболочек и когда загружаются файлы запуска - http://hacktux.com/bash/bashrc/bash_profile studgeek 11 лет назад 0
Что подразумевается под "источником" здесь? elgrego 8 лет назад 0
@elgrego, вот хорошее описание: _Если файл получен из источника (введя имя исходного файла или. filename в командной строке), строки кода в файле выполняются так, как если бы они были напечатаны в командной строке. : //www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html Stefan Lasiewski 8 лет назад 0
57
Yuval

Получается, что в 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файл.

Your question was answered [correctly] on June 1 2010 -- one day after you asked it. Over a year later, you come back and provide the exact same answer and accept your own answer... David Cowden 11 лет назад 5
На самом деле его ответ добавляет больше подробностей, чем ответ, полученный 1 июня 2010 года. Он специально решает проблему с Mac OS X, которая мне показалась полезной. webworm 10 лет назад 3
Обратите внимание, что если `.bash_profile` уже существует в вашем домашнем каталоге, то файл` .profile` не будет прочитан! Phani 9 лет назад 3
У меня свежая установка Mac Os El capitan. Нет * профиля * файла. Просто создайте файл .profile, и он работает. Я лично переименовал мой .bashrc в .profile. Nicolas Thery 8 лет назад 0
4
squircle

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

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

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

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

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

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

Удачи!

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

Используйте файл .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"  
Я рекомендую вам использовать ~ / .bash_profile (вместо ~ / .profile), если вы не уверены, что хотите, чтобы ваши настройки вступили в силу в других оболочках и чтобы они были совместимы. Chris Page 12 лет назад 2
Просто чтобы убедиться, что это не проблема "Linux = .bashrc vs. Mac OS =. (Bash_) profile", файлы запуска оболочки работают одинаково на Linux и Mac, и файл .bashrc является более подходящим местом для сессии конкретные настройки. вы используете, например, tmux или screen, у вас могут не быть сеансов входа в систему, но вы все еще хотите использовать псевдонимы Причина, по которой Mac чувствует себя иначе, заключается в том, что большинство дистрибутивов Linux поставляют скрипты системного профиля или профили скелета, которые уже делегируют (исходный) bashrc. eckes 7 лет назад 0