Я использую iTerm в Mac OS X 10.6. Кажется , когда я открываю Iterm, ни .bashrcни .bash_profileдобыт. Я могу сказать, потому что псевдонимы, определенные в .bashrcне установлены. Как исправить?
То, что происходит, ~/.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
Это должно подтвердить, что файл получен, и вы можете посмотреть синтаксис файла.
Установка различной переменной среды для каждого исходного файла позволяет получить больше информации, то есть, если получено более одного файла, вы будете знать это, а не только последний (если не заказанный источник).
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 для оболочки без входа в систему.
Мой опыт говорит о том, что вы не хотите получать один файл .bashx из другого, по какой-то причине они отделены :) Если вы делаете это, значит, что-то не так
Александр Миллс
@AlexanderMills Причина, по которой эти файлы существуют, заключается в том, что Mac разорвал их прямо из Unix. Нет причин, по которым они не должны загружаться для пользователя.
RaisinBranCrunch
Вы можете получать циклические вызовы, если они загружают друг друга, это проблема, лучший способ избежать которой - переворачивать логическое значение с помощью env var и загружать другие файлы, только если логическое значение не установлено.
Поместите определения псевдонимов в файл профиля bash, вам нужно создать файл, но он будет получен автоматически. Я создаю отдельный файл с именем alias.configuration и отправляю его в .bash_profile только потому, что у меня есть другой пользователь, и я хочу иметь такой же набор псевдонимов.
На самом деле ни источник, .bashrcни .bash_profileисточник.
Computist
1
Добавлять
set-x
к началу /etc/profile. Это дает вам линию за линией счета все , что запускается на выполнение при bashзапуске, в том числе файлы получены из внутри /etc/profile, ~/.bash_profileи т.д. Это немного сложной , если вы не понимаете , bashбыл очень хорошо, но вы можете быть в состоянии увидеть , если в загрузочном файле есть ошибка, и вывод будет полезен для тех, кто имеет опыт, bashчтобы помочь вам определить вашу проблему.
Вы можете удалить set -xстроку, когда вы закончите устранение неполадок.
Я проголосовал за этот ответ, потому что он, кажется, единственный, признающий, что в OS X в какой-то момент bash будет использовать источник «.bash_rc» вместо «.bashrc». Я пришел сюда только потому, что пытался выяснить, почему (а я до сих пор не знаю).
Марникс А. ван Аммерс
0
В iTerm2 убедитесь, что вы используете «оболочку входа» вместо пользовательской команды, включающей «вход», которая не выполняет то, что вы ожидаете.
(1) Что? (2) Если вы bashвсегда бегаете zsh, это не то, чего кто-либо ожидает.
Скотт
Если я установлю / bin / bash --login, он не предоставит никаких возможностей zsh. Затем, если я изменю его на loginshell в предпочтении, он не будет читать .bash_profile. Каждый раз мне приходится бегать source ~/.bash_profileвручную. @ Скотт После выполнения вышеперечисленных вещей у меня есть zsh требуемым образом.
Мухаммед Василий
(1) Я хочу сказать, что это zshможет быть тем, что вы хотите , но это не требуется или не задается этим вопросом, который помечен как [bash] и ничего не говорит о нем zsh. (2) Если вы определяете псевдонимы и функции оболочки и устанавливаете переменные (без их экспорта) в вашем .bashrcи / или .bash_profileони доступны вам в вашей zshоболочке?
~/.bash_profile
сначала вызывается bash, что приводит к короткому замыканию в ваших инструкциях~/.bashrc
. Эта проблема может возникнуть неожиданно, если мошенническая программа добавляет некоторые инструкции к вам,~/.bash_profile
когда ранее файл не существовал, и вы поместили все свои команды bash~/.bashrc
. Решение состоит в том, чтобы либо удалить ваш ~ / .bash_profile, либо получить ~ / .bash_profile исходный текст для ~ / .bashrc. Это можно сделать, добавив команду:source ~/.bashrc
в конец вашего~/.bash_profile
и перезагрузив терминал.Ответы:
Bash будет источником EITHER .bash_profile или .bashrc, в зависимости от того, как он называется. Если это оболочка входа в систему, Bash ищет ~ / .bash_profile, ~ / .bash_login или ~ / .profile в указанном порядке и находит первый найденный (и только этот). Если это не оболочка входа в систему, но интерактивная (как и большинство терминальных сессий), Bash будет исходить ~ / .bashrc.
Скорее всего, iTerm ищет ~ / .bashrc. Если он настроен для запуска в качестве оболочки входа в систему, он будет искать ~ / .bash_profile. Это почти наверняка ошибка в файле конфигурации, а не то, что оболочка не использует его.
Я бы поставил строку в начале каждого файла. В верхней части ~ / .bash_profile:
И в верхней части ~ / .bashrc:
Затем откройте новый iTerm и введите
Это должно подтвердить, что файл получен, и вы можете посмотреть синтаксис файла.
источник
В iTerm2 ни одно из этих решений не помогло мне. Я смог заставить его правильно читать мой файл .bashrc, добавив команду
в поле « Отправить текст при запуске» в разделе «Настройки» / «Общие» для моего профиля iTerm.
источник
~/.bashrc
. Отредактировал это.Мне просто интересно, вы действительно используете Bash? Может быть, вы можете использовать
echo $SHELL
, вполне возможно, что вы используете Zsh , вы установили на-мой-ZH ?На самом деле я сталкиваюсь с той же проблемой, что и вы, я исправляю ее, настраивая ~ / .zshrc вместо этого либо ~ / .bash_profile для оболочки входа в систему, либо ~ / .bashrc для оболочки без входа в систему.
Может быть, вы можете попробовать
источник
На моей 10.6 машина поставлена
~/.profile
. Таким образом,source .bashrc
вход~/.profile
должен сделать работу.источник
Легко исправить.
1. Откройте ваш
~/.zshrc
файл2. Добавьте следующую строку в конец файла.
источник
На моей машине 10.9 ~ / .bash_profile поставлен. Поэтому исходная запись .bashrc в ~ / .bash_profile должна сделать эту работу.
источник
Поместите определения псевдонимов в файл профиля bash, вам нужно создать файл, но он будет получен автоматически. Я создаю отдельный файл с именем alias.configuration и отправляю его в .bash_profile только потому, что у меня есть другой пользователь, и я хочу иметь такой же набор псевдонимов.
источник
.bashrc
ни.bash_profile
источник.Добавлять
к началу
/etc/profile
. Это дает вам линию за линией счета все , что запускается на выполнение приbash
запуске, в том числе файлы получены из внутри/etc/profile
,~/.bash_profile
и т.д. Это немного сложной , если вы не понимаете ,bash
был очень хорошо, но вы можете быть в состоянии увидеть , если в загрузочном файле есть ошибка, и вывод будет полезен для тех, кто имеет опыт,bash
чтобы помочь вам определить вашу проблему.Вы можете удалить
set -x
строку, когда вы закончите устранение неполадок.источник
На 10.10 и iTerm2 2.0 настроенный профиль
источник
В iTerm2 убедитесь, что вы используете «оболочку входа» вместо пользовательской команды, включающей «вход», которая не выполняет то, что вы ожидаете.
источник
Внесите следующие изменения, и iTerm будет источником bashrc
iTerm> Настройки> Общие> [x] Команда: / bin / bash
источник
Проблема может быть исправлена добавлением строки ниже в / etc / bashrc
источник
Я объединил пару решений вместе, чтобы работать так, как ожидалось.
.bash_profile
исходник и запуск по зш.Preferences -> Profiles -> General
,Выберите команду под командой.
И добавьте в текстовое поле
/bin/bash --login
.Затем в .bash_profile добавить строку
/bin/zsh --login
Вот и все.
источник
bash
всегда бегаетеzsh
, это не то, чего кто-либо ожидает.source ~/.bash_profile
вручную. @ Скотт После выполнения вышеперечисленных вещей у меня есть zsh требуемым образом.zsh
может быть тем, что вы хотите , но это не требуется или не задается этим вопросом, который помечен как [bash] и ничего не говорит о немzsh
. (2) Если вы определяете псевдонимы и функции оболочки и устанавливаете переменные (без их экспорта) в вашем.bashrc
и / или.bash_profile
они доступны вам в вашейzsh
оболочке?