.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.