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