.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 в мои настройки терминала и терминала. Кстати, я использую 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 по умолчанию без моих псевдонимов.
Марк Струзинский

Этот ответ был сломан до сих пор - второй фрагмент должен был войти ~/.bashrc. Отредактировал это.
Даниэль Бек

Я использую ZSH и у меня была та же проблема. За исключением того, что ни один из моих конфигурационных файлов не существовал в первую очередь и должен был быть создан. Я использовал этот ответ и установил «Отправить текст при запуске», однако, когда я перезапустил ZSH, создал его .zsh и перезаписал мой файл, я смог удалить «Отправить текст при запуске» и добавить свои настройки к вновь созданному файлу. Не уверен, если это кому-нибудь поможет
Арнолио

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

23

Мне просто интересно, вы действительно используете Bash? Может быть, вы можете использовать echo $SHELL, вполне возможно, что вы используете Zsh , вы установили на-мой-ZH ?

На самом деле я сталкиваюсь с той же проблемой, что и вы, я исправляю ее, настраивая ~ / .zshrc вместо этого либо ~ / .bash_profile для оболочки входа в систему, либо ~ / .bashrc для оболочки без входа в систему.

Может быть, вы можете попробовать


1
Интересное предложение, хотя этому вопросу уже 3 года и на него есть принятый ответ.
Тайсон

12

На моей 10.6 машина поставлена ~/.profile. Таким образом, source .bashrcвход ~/.profileдолжен сделать работу.


Работал для меня на Mac OS El Capitan.
user674669 15.06.16

Мой опыт говорит о том, что вы не хотите получать один файл .bashx из другого, по какой-то причине они отделены :) Если вы делаете это, значит, что-то не так
Александр Миллс

@AlexanderMills Причина, по которой эти файлы существуют, заключается в том, что Mac разорвал их прямо из Unix. Нет причин, по которым они не должны загружаться для пользователя.
RaisinBranCrunch

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

8

Легко исправить.

1. Откройте ваш ~/.zshrcфайл

2. Добавьте следующую строку в конец файла.

source ~/.bash_profile

1
Brilliant! Это сделало это для меня. Мне никогда не приходило в голову, что zsh мешает мне после установки Oh-my-zh.
Синди Конуэй

6

На моей машине 10.9 ~ / .bash_profile поставлен. Поэтому исходная запись .bashrc в ~ / .bash_profile должна сделать эту работу.


1

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


1
На самом деле ни источник, .bashrcни .bash_profileисточник.
Computist

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». Я пришел сюда только потому, что пытался выяснить, почему (а я до сих пор не знаю).
Марникс А. ван Аммерс

0

В iTerm2 убедитесь, что вы используете «оболочку входа» вместо пользовательской команды, включающей «вход», которая не выполняет то, что вы ожидаете.


Что на самом деле делает команда iTerm2?
Studgeek

0

Внесите следующие изменения, и iTerm будет источником bashrc

iTerm> Настройки> Общие> [x] Команда: / bin / bash


0

Проблема может быть исправлена ​​добавлением строки ниже в / etc / bashrc

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


-1

Я объединил пару решений вместе, чтобы работать так, как ожидалось.

.bash_profile исходник и запуск по зш.

Preferences -> Profiles -> General ,

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

Затем в .bash_profile добавить строку /bin/zsh --login

Вот и все.


(1) Что? (2) Если вы bashвсегда бегаете zsh, это не то, чего кто-либо ожидает.
Скотт

Если я установлю / bin / bash --login, он не предоставит никаких возможностей zsh. Затем, если я изменю его на loginshell в предпочтении, он не будет читать .bash_profile. Каждый раз мне приходится бегать source ~/.bash_profileвручную. @ Скотт После выполнения вышеперечисленных вещей у меня есть zsh требуемым образом.
Мухаммед Василий

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