.bashrc не постачається в iTerm + Mac OS X


62

Я використовую iTerm в Mac OS X 10.6. Здається, коли я відкриваю програму iTerm, ні її .bashrcне .bash_profileотримують. Я можу сказати, оскільки псевдоніми, визначені в .bashrc, не встановлені. Як виправити?


2
Те, що відбувається ~/.bash_profile, викликає спочатку bash, що є коротким замиканням на інструкції, які ви маєте ~/.bashrc. Ця проблема може статися несподівано, якщо програма-шахрая додасть до вас якісь інструкції, ~/.bash_profileколи раніше файл не існував, і ви помістили всі ваші команди bash ~/.bashrc. Рішення полягає в тому, щоб або видалити ~ / .bash_profile, або мати джерело ~ / .bash_profile своїм ~ / .bashrc. Це можна виконати, додавши команду: source ~/.bashrcдо кінця ~/.bash_profileта перезапустивши термінал.
Ерік Лещинський

Відповіді:


53

Bash буде джерелом EITHER .bash_profile або .bashrc, залежно від способу його виклику. Якщо це оболонка для входу, Bash шукає у цьому порядку ~ / .bash_profile, ~ / .bash_login або ~ / .profile та надсилає першу, яку він знайде (і лише цю). Якщо це не оболонка для входу, але інтерактивна (як і більшість термінальних сеансів), Bash видасть ~ / .bashrc.

Ймовірно, iTerm шукає ~ / .bashrc. Якщо він налаштований для запуску в якості оболонки для входу, він буде шукати ~ / .bash_profile. Це майже напевно помилка в конфігураційному файлі, а не в тому, що оболонка не отримує його.

Я б поставив рядок на початку кожного файлу. Угорі ~ / .bash_profile:

export BASH_CONF="bash_profile"

І вгорі ~ / .bashrc:

export BASH_CONF="bashrc"

Потім відкрийте новий iTerm і введіть

$ echo $BASH_CONF

Це повинно підтвердити пошук файлу, і ви можете переглянути синтаксис файлу.


2
Встановлення різної змінної середовища для кожного вихідного файлу дозволяє отримати додаткову інформацію, тобто якщо джерело отримано більше одного файлу, ви знатимете це, не тільки останній (якщо не порядок пошуку)
kmarsh

Це все ще не завантажує .bashrc файл. Мені довелося додати джерело ~ / .bashrc до моїх налаштувань iTerm та Terminal. btw Я використовую Mac OS X 10.9.5.
Гігантський лось

Я щойно додав .profile файл, який автоматично працює на OS X 10.9.5, не псуючи ваші налаштування терміналу.
Гігантський лось

1
Я дізнався, що це оболонка для входу, перейшовши до налаштувань -> профілі -> загальна оболонка та оболонка для входу, вибрана під командою. Діє на MacOS El Capitan та iTerm2 3.0.14
Aditya

Тут рішення для мене не спрацювало, але я знайшов рішення. На початку не було ні bashrc, ні bash_profile. Тут відповідь пропонує створити bashrc. Замість створення файлу bashrc я створив bash_profile, і він працював. Тепер мені потрібно зрозуміти, чому bashrc не був виконаний і bash_profile так.
kalmanIsAGameChanger

68

В iTerm2 жоден із цих рішень не працював для мене. Мені вдалося змусити його правильно прочитати мій файл .bashrc, додавши команду

source ~/.bashrc 

до поля Надіслати текст на початку: у розділі Налаштування / Загальне для мого профілю iTerm.

введіть тут опис зображення


Що сталося, коли ви зробили те, що пропонує прийнята відповідь? Немає виходу?
Даніель Бек

Правильно. У мене немає виходу, і iTerm 2 просто завантажив bash shell за замовчуванням ні в одному з моїх псевдонімів.
Марк Струзінський

Ця відповідь була порушена дотепер - другий фрагмент повинен був увійти ~/.bashrc. Редагував це.
Даніель Бек

Я використовую ZSH і у мене була та сама проблема. За винятком того, що жоден мій конфігураційний файл не існував в першу чергу і його потрібно було створити. Я використав цю відповідь і встановив "Надіслати текст на початку", однак, коли я перезапустив ZSH створив його. Zsh і перезаписав мій файл, я зміг видалити "Надіслати текст на початку" і додати свої конфігурації до новоствореного файлу. Не впевнений, чи допомагає це комусь
Арноліо

Я подумав, що це моя проблема .. і тоді по дорозі зрозумів, що мій домашній каталог - це не папка, в якій я почав .. так що, як я перемістив .bash_profile в інше місце, і я подумав, що я ln -s (посилаючись на це з мого ~ (домашнього) каталогу я насправді додав симпосилання в неправильній папці, додавши це сюди, якщо це допоможе комусь іншому, хто збирався отримати цю відповідь.
Аліссо,

23

Мені просто цікаво, чи ти справді використовуєш Bash? Можливо, ви можете використовувати echo $SHELL, цілком можливо, що ви використовуєте zsh , ви встановили на-my-zh ?

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

Можливо, ви можете спробувати


1
Цікава пропозиція, хоча на це питання 3 роки і є прийнята відповідь.
Тайсон

12

На моїй машині 10,6 ~/.profileджерела. Таким чином, source .bashrcзапис ~/.profileповинен робити цю роботу.


Працював для мене на Mac OS El Capitan.
користувач674669

Мій досвід говорить, що ви не хочете надсилати один .bashx-файл з іншого, вони є окремими з причини :) Якщо ви це робите, то щось не так
Олександр Міллз

@AlexanderMills Причина цих файлів в тому, що Mac вирвав їх прямо з Unix. Немає жодної причини, що їх не слід завантажувати для користувача.
RaisinBranCrunch

Ви можете отримувати циркулярні дзвінки, якщо вони завантажують один одного, це проблема, найкращий спосіб уникнути цього - перегортати булеве значення з env var та завантажувати лише інші файли, якщо не встановлено boolean.
Олександр Міллс

8

Легке виправлення.

1. Відкрийте свій ~/.zshrcфайл

2. Додайте наступний рядок у кінці файлу.

source ~/.bash_profile

1
Блискуче! Це зробило це для мене. Мені ніколи не спадало на думку, що zsh заважає після того, як я встановив «О-мі-ж».
Сінді Конвей

6

На моїй машині 10.9 розміщено ~ / .bash_profile. Отже, вихідна .bashrc запис у ~ / .bash_profile повинна виконати цю роботу.


1

Помістіть свої псевдонімні визначення у файл профілю bash, ви повинні створити файл, але він буде отриманий автоматично. Я створюю окремий файл під назвою alias.configuration і вивожу його в .bash_profile лише тому, що у мене визначений інший користувач і хочу встановити той самий псевдонім.


1
Насправді, ні вони .bashrcне .bash_profileотримуються.
Обчислювач

1

Додайте

set -x

до початку с /etc/profile. Це дає вам покроковий запис про все, що виконується під час bashзапуску, включаючи файли, отримані зсередини /etc/profile, ~/.bash_profileі т. Д. Це трохи неприємно, якщо ви не bashдуже добре розумієте сценарії, але ви зможете побачити, чи у файлі запуску є помилка, і вихід буде корисним для того, хто має досвід, bashщоб допомогти вам знайти вашу проблему.

Ви можете видалити set -xрядок, коли закінчите усунення несправностей.


1

10.10 та iTerm2 2.0 - індивідуальний профіль

  • .bash_rc повинен працювати.
  • .bash_profile, спробуйте "/ bin / bash --login" замість "/ bin / bash"

Я проголосував за цю відповідь, тому що, здається, єдиний визнав, що в OS X в якийсь момент bash видасть ".bash_rc" замість ".bashrc". Я прийшов сюди лише тому, що намагався з’ясувати, чому (а я досі не знаю).
Marnix A. van Ammers

0

В iTerm2 переконайтеся, що ви використовуєте "оболонку входу" замість спеціальної команди, включаючи "вхід", яка не робить те, що ви очікуєте.


Що насправді робить команда iTerm2?
studgeek

0

Внесіть наступні зміни і iTerm видасть bashrc

iTerm> Налаштування> Загальне> [x] Команда: / bin / bash


0

Проблему можна вирішити, додавши нижній рядок у / etc / bashrc

[-r "$ HOME / .bashrc"] &&. "$ HOME / .bashrc"


-1

Я поєднав пару рішень разом, щоб працювати як слід.

.bash_profile джерело та запустіть на zsh.

Preferences -> Profiles -> General .

Виберіть команду під командою.
І додайте в текстове поле /bin/bash --login.

Потім у .bash_profile додайте рядок /bin/zsh --login

Це воно.


(1) Що? (2) Якщо ви bashпостійно бігаєте zsh, то ніхто не очікує.
Скотт

Якщо я встановив / bin / bash --login, він не надає жодних функцій zsh. Потім, якщо я зміню його на параметр входу, він не читає .bash_profile. Кожен раз, коли мені доводиться бігати source ~/.bash_profileвручну. @Scott Після виконання вищезазначених речей у мене є zsh необхідним чином.
Мухаммед базилік

(1) Моя думка полягає в тому, zshщо ви можете хотіти , але це не вимагається і не вимагається цим питанням, яке позначено тегом [bash] і нічого не говорить про це zsh. (2) Якщо ви визначаєте псевдоніми та функції оболонки та встановлюєте змінні (не експортуючи їх) у вашому .bashrcта / або .bash_profile, чи вони доступні вам у вашій zshоболонці?
Скотт-
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.