Де знайти файл .bashrc на Mac OS X Snow Leopard and Lion?


89

Я хочу встановити rvm на своїй машині Snow Leopard.

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


1
Ви повинні поставити своє рішення у відповідь і прийняти його (Вам доведеться почекати день-два, перш ніж SU дозволить вам це зробити) Таким чином, люди, які мають ту саму проблему, можуть дивитись на питання, бачать, що на нього є відповідь.
Ніфле

1
Його рішення нічим не відрізняється від голосуючої відповіді.
Девід Коуден

Просто для переконання, що це не проблема "Linux = .bashrc vs. Mac OS =. (Bash_) профіль" файли запуску оболонки працюють однаково на Linux та Mac, а файл .bashrc - це більш придатне місце для сесії конкретні налаштування. ви використовуєте, наприклад, tmux або екран, можливо, у вас немає сеансів входу, але ви все одно хочете псевдонімів. Причина, по якій Mac відчуває інакше, полягає в тому, що більшість дистрибутивів Linux постачають системні сценарії профілів або скелетні профілі, які вже делегують (джерело) bashrc.
eckes

Відповіді:


78

Щодо проблеми з .bashrcвищезгаданим:

У більшості систем ~/.bashrcвикористовується лише при запуску інтерактивної оболонки без входу . Однак, коли ви запускаєте нову оболонку, вона часто є інтерактивною оболонкою для входу . Оскільки це оболонка для входу , то .bashrcігнорується. Щоб зберегти середовище послідовно між оболонками, які не входять у систему та вхідними даними, ви повинні подати джерело .bashrcвід свого .profileабо свого .bash_profile.

Див. Посібник з Bash, розділ 6.2 Файли запуску Bash

Закликається як інтерактивна оболонка для входу, або з --login

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

Закликається як інтерактивна оболонка без входу

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

Отже, як правило, ваш ~ / .bash_profile містить рядок

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

після (або раніше) будь-яких ініціалізацій, що стосуються входу.

У моєму Mac (Running 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, ось хороший опис: Коли файл розміщено (ввівши ім'я вихідного файлу або ім'я файлу в командному рядку), рядки коду у файлі виконуються так, ніби вони були надруковані в командному рядку. Дивіться tldp.org/HOWTO/Bash-Prompt-HOWTO/x237.html
Stefan Lasiewski

60

Так виходить, що на Mac OS X Snow Leopard, а також на Mac OS X Lion, завантажений файл називається .profile, а не .bashrc.

Що ви хочете зробити, це створити файл ~/.profileі назвати його .profile (якщо він ще не існує).

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

Кілька бічних записок:

  1. Період перед файлом позначає його невидимим для Finder і командою ls за замовчуванням. Щоб перерахувати невидимі файли за допомогою команди ls від Terminal, використовуйте -aпараметр як такий:ls -a
  2. ~Символ позначає , /Users/YourUserNameде YOURUSERNAME є короткое_імя ваше ім'я користувача в.

Редагувати: Кріс Пейдж зазначає (правильно), що все, що ви розміщуєте у файлі .profile, застосовуватиметься до будь-якої оболонки, яку ви використовуєте (наприклад, zhs, bash та ін.). Якщо ви хочете, щоб вміст зачіпав лише оболонку bash, помістіть вміст у .bash_profileфайл замість .profileфайлу.


5
На ваше запитання відповіли [правильно] 1 червня 2010 року - через день після того, як ви його задали. Через рік ви повертаєтесь і даєте таку саму відповідь і приймаєте свою власну відповідь ...
Девід Коуден

3
Насправді його відповідь додає більше деталей, ніж відповідь, надана 1 червня 2010 року. Він спеціально розглядає проблему в Mac OS X, яку я вважав корисною.
webworm

3
Зауважте, що якщо .bash_profileу вашому домашньому каталозі вже існує, то .profileфайл не буде прочитаний!
Phani

У мене свіжа Встановлення капітана Mac Os El. Файлу профілю немає . Просто створіть .profile файл, і він працює. Я особисто перейменував свій .bashrc в .profile.
Ніколя Тері

4

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


1
насправді це не спрацювало, але ви направили мене в правильному напрямку, сказавши мені зробити свій власний файл. Файл, який працював на конфігурації Snow Leopard, був .profile, а не .bashrc (який чомусь не завантажений у цій ОС). Я опублікую детальні інструкції у питанні. Дякую!
Ювал

@Yuval: За замовчуванням, засіб .bashrcбуде працювати, але тільки якщо його немає .profile. Я думаю, ~/.profileіснує за замовчуванням, хоча. Радий, що можу допомогти! (І ви повинні поставити своє рішення у відповідь і прийняти його для майбутніх читачів цього питання).
білка

Я думаю, що ваш коментар про, лише якщо немає .profile є невірним. .bashrc буде працювати в інтерактивній оболонці без входу, або якщо вона отримана з .profile (.bash_profile, мабуть, краще місце, оскільки .profile призначений для оболонки Bourne). .profile використовується під час інтерактивної оболонки без входу.
Стефан Ласєвський

@Stefan Це звучить правильно. Я не експерт :)
біжить

2
Ніхто не є;). Цей матеріал (.bashrc vs .profile vs. .bash_profile vs. .bash_login vs. Інтерактивна оболонка входу проти інтерактивна оболонка без входу проти неінтерактивна оболонка) заплутаний, і він порушений і перекритий багатьма Unixes та скриптами оболонки.
Стефан Ласєвський

3

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

Однак вам потрібно змінити кореневий обліковий запис, щоб змінити його. Місцеві специфікації для користувача "~ / .bashrc" повинні починатися з наступного фрагмента, щоб прочитати та завантажити налаштування башів на рівні системи:

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

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

Удачі!


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

1
Для окремих користувачів найкраще додавати ці налаштування в домашній каталог за адресою ~/.bashrc, а не /etc/bashrc. /etc/bashrc- це глобальні налаштування для всіх користувачів вашої системи, імовірно, це не те, що потрібно. Крім того, Apple може /etc/bashrcперіодично змінюватися і змінюватися , що може підірвати ваші налаштування.
Стефан Ласевський

1

Використовуйте файл .profile, щоб додати все, що ви додали до файлу .bashrc Linux.

Наприклад

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 або екран, можливо, у вас немає сеансів входу, але ви все одно хочете псевдонімів. Причина, по якій Mac відчуває інакше, полягає в тому, що більшість дистрибутивів Linux постачають системні сценарії профілів або скелетні профілі, які вже делегують (джерело) bashrc.
eckes
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.