Я поместил в свой .bashrc
файл несколько псевдонимов команд, чтобы они могли загружаться каждый раз, когда я открываю новое окно терминала. Но этого не происходит.
Мне нужно выбрать run script:
в Терминале> Настройки> « MyDefaultTheme »> Предварительная панель оболочки и добавить: source .bashrc && clear
чтобы он работал...
Это кажется странным, так как во многих учебниках говорится, что вам просто нужно добавить в .bashrc
файл, и все в порядке.
Обратите внимание, что я не запускаю bash
при использовании терминала, мне больше нравится другой (по умолчанию) (не знаю, что это такое), потому что он показывает мне, где я все время, например:
>>d54c6b47b:~ romeo$
вместо:
>>bash$
В bash все грузится как положено.
Итак, мой вопрос: почему мой .bashrc
файл не загружался автоматически, и мне нужно было добавлять возможность вызывать его каждый раз?
Также в каком-то учебнике мне сказали сделать что-то вроде:
$alias la=’ls -la’ >> ~/.bashrc
который должен написать псевдоним для моего .bashrc
, это тоже не работает...
Обратите внимание, что я новичок в UNIX, так что будьте осторожны.
Просто поместите это в свой .profile
файл из домашнего каталога, и он должен работать при следующем запуске новой оболочки или после запуска.source ~/.profile
В этой ссылке четко указан порядок, в котором файлы запуска считываются и загружаются оболочкой: http://hayne.net/MacDev/Notes/unixFAQ.html#shellStartup
~/.bashrc
. Однако решение состоит не в том, чтобы просто поместить ваш .bashrc
контент в файл запуска входа в систему, потому что эти два файла предназначены для выполнения разных типов настройки. Вместо этого каноническая настройка для Bash заключается в том, чтобы ваш ~/.bash_profile
исходный код ~/.bashrc
находился в какой-то подходящей точке сценария (обычно в конце).zsh
оболочку по умолчанию (не ie bash
:), настроенную в OS X 2019+ (в настоящее время Catalina), см. apple.stackexchange.com/a/338622/192005 .Был там, сделал это. Что мне стало известно, OS X не читает .bashrc
файл при запуске bash. Вместо этого он читает следующие файлы (в следующем порядке):
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
См. также информативный и полезный комментарий Криса Джонсена :
По умолчанию Терминал запускает оболочку через
/usr/bin/login
, что делает ее оболочкой входа в систему. На каждой платформе (не только Mac OS X) bash не использует.bashrc
оболочки для входа в систему (только/etc/profile
и первый из.bash_profile
существующих.bash_login
и доступных для.profile
чтения). Вот почему "вставьsource ~/.bashrc
свой.bash_profile
" - это стандартный совет.
Обычно я просто ставлю то, что обычно вставляю — ~/.bashrc
до ~/.profile
сих пор срабатывало как волшебство.
/usr/bin/login
, что делает ее оболочкой входа в систему. На каждой платформе (не только Mac OS X) bash не использует .bashrc
оболочки для входа в систему (только /etc/profile
и первый из .bash_profile
существующих .bash_login
и доступных для .profile
чтения). Вот почему «вставь source ~/.bashrc
свой .bash_profile
» — это стандартный совет.echo $SHELL
выводит?~/.bash_profile
, а не все. Вы можете запустить простой тест, создав 3 файла. Похоже, что терминал bash имеет предпочтение > > . Если какой-либо из них существует, менее предпочтительные пропускаются. Вот почему иногда рекомендуется также использовать исходный код в формате .
~/.profile
~/.bash_login
~/.bash_profile
~/.bash_login
~/.profile
~/.profile
~/.bash_profile
.bashrc
или .bash_profile
сначала использовать псевдоним, который я установил, я не знаю, где разместить свой псевдоним, чтобы он оставался постоянным каждый раз, когда я открываю новый терминалzsh
оболочку по умолчанию (не ie bash
:), настроенную в OS X 2019+ (в настоящее время Catalina), см. apple.stackexchange.com/a/338622/192005 .~/.bashrc
в свой .bash_profile
» является стандартным советом , а вы говорите: поместите ~/.bashrc
в~/.profile
. Вы оба рекомендуете? FWIW это сработало для меня только тогда, когда я получил файл ~/.profile
.Я помещал все в ~/.bashrc
и только source ~/.bashrc
в .profile.
Это позволяет сеансам экрана и xterm (и, я думаю, tmux) наследовать мою среду, поскольку сеансы без входа в систему выполняются только .bashrc
, тогда как сеансы входа (например, терминал или iTerm) выполняются только .profile
.
.profile
это общее для нескольких оболочек и должно содержать только POSIX-совместимый код sh. Если он исходит .bashrc
, он, возможно, содержит код, специфичный для Bash (существование .bashrc
файла зависит от Bash). Я рекомендую переименовать ваш .profile
в, .bash_profile
так как вы используете его специфичным для Bash способом. Или поместите общий код .profile
и создайте .bash_profile
исходный код .profile
и файлы .bashrc
.Есть два сценария:
Для обоих вы хотите использовать источник ~/.bashrc
в своем профиле, который загружается или загружается при запуске вашей оболочки для вашего терминала.
ЛИНУКС
В Linux ~/.profile
автоматически создается исходный код в вашей оболочке при запуске. Итак, если вы перейдете к своему терминалу и наберете cd ~; ls -A
, вы увидите все свои файлы и каталоги в своем домашнем каталоге ( /home/usrname/
). Вы должны увидеть файл с именем .profile
. Это файл, который автоматически загружается при запуске терминала.
Если вы хотите добавить псевдонимы и функции ~/.bashrc
(что я и делаю), вам следует (внутри ~/.profile
добавить оператор if, который проверяет, ~/.bashrc
является ли файл непустым, а затем исходить его.
Чтобы проверить, делаете ли вы ~/.profile
это уже, введите nano ~/.profile
. Это откроет его в текстовом редакторе (вы можете использовать gedit, если знаете, что он у вас есть, или даже vim, если знаете, как им пользоваться). Вы можете получить пустой текстовый файл (вы не должны), но если вы это сделаете, просто продолжите. Если вы нигде не видите строку с надписью source ~/.bashrc
, введите где-нибудь следующие строки (поместите их в разумное место, например, в конец или начало, а не в середину оператора if):
if [ -s ~/.bashrc ]; then
source ~/.bashrc;
fi
Это проверяет, ~/.bashrc
является ли файл непустым (с помощью if [ -s ~/.bashrc ]
), и если это так, он создает его. Довольно просто. Теперь вы можете добавить любой допустимый псевдоним, функцию, переменную и т. д. в файл ~/.bashrc
.
MAC OS X
По умолчанию (до Catalina 2019) источники Mac OS X ~/.bash_profile
. Чтобы иметь возможность что-то добавлять ~/.bashrc
(что, опять же, я делаю и в OS X), вы следуете той же процедуре, что и в Linux. В терминале введите cd ~; nano .bash_profile
. Найдите строку, в которой говорится, source ~/.bashrc
и если ее нет, добавьте оператор if выше ( if [ -s ~/.bashrc ]; then source ~/.bashrc; fi
).
ПРИМЕЧАНИЯ
При написании оператора if обязательно оставляйте пробелы между практически всем (например if [ -s ~/.bashrc]; then echo "found"; fi
, не работает, потому что нет пробела между ~/.bashrc
и ]
- интерпретатор будет думать, что это одно слово).
Если вы хотите выяснить, как лучше проверять содержимое оператора if, перейдите в терминал и введите man \[
; это, по сути, дает вам изложение оператора if. Например, if [ -f /path/to/file ]; then echo "it's a file"; else echo "not a file"; fi
проверяет, /path/to/file
является ли файл файлом и, соответственно, выводит его на стандартный вывод. Я также всегда ссылаюсь на это для облегчения восприятия и быстрой справки: 7.2. Операторы проверки файлов .
Надеюсь, это поможет. Я помню, в каком замешательстве я был, когда начал все это (что было не так давно); так что удачи вам в ваших будущих начинаниях с UNIX!
.profile
источник только в том случае, если ваша оболочка является оболочкой входа в систему, в противном случае .bashrc
источникzsh
оболочку по умолчанию (не ie bash
:), настроенную в OS X 2019+ (в настоящее время Catalina), см. apple.stackexchange.com/a/338622/192005 .Кстати, если у вас активирован ZSH, он заменяет bash!
Поэтому все эти ~/.bashrc
файлы не загружаются.
~/.zshrc
Вместо этого вы должны установить свои псевдонимы .
zsh
это оболочка по умолчанию (активация не требуется) (вместо bash
) ;)Поиск .profile в .bash_profile сделал это за меня
echo 'source ~/.profile' >> ~/.bash_profile
.bashrc
из вашего, .bash_profile
а не из .profile
. .bash_profile
специфичен для Bash и должен быть источником двух других.zsh
. Он не создает исходные .bash*
файлы автоматически и начинается с .profile
.zsh
— но @ingyhere, вы уверены, что поиск начинается с ~/.profile
? В моем случае (на моей Catalina) казалось, что это не так, и вместо этого я успешно использовал только ~/.zshrc
(согласно apple.stackexchange.com/a/338622/192005 ).~/.zprofile
. Этот ответ цитирует заказ из документов для zsh. Кроме того, ~/.profile
кажется, что он загружается рядом оболочек, поэтому он выглядит более универсальным.Я обнаружил, что после установки rvm (автоматический установщик, никаких правок вручную) он создал ~/.bash_login
для себя файл, которого раньше у меня никогда не было.
Однако это означает, что мои ~/.profile
настройки и псевдонимы больше не загружаются! Многие ярлыки исчезли. Я думал, что они работают последовательно, а не исключительно :-/
я добавил
. ~/.profile
чтобы ~/.bash_login
связать вещи, как я ожидал.
.profile
является общим для нескольких разных оболочек и должен содержать только POSIX-совместимый код sh. .bash_profile
специфичен для Bash и может содержать код, специфичный для Bash. В общем, если вы используете Bash, вы должны предпочесть, .bash_profile
если вы не будете осторожны, чтобы убедиться, что ваш код запуска не содержит ничего, что зависит от Bash. Какая бы программа ни была создана .bash_login
, вероятно, это произошло потому, что она содержит код, специфичный для Bash, но она должна была включать код в исходный код, .profile
если он существует.Положить...
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function
... in ~/.bashrc
, а затем источник ~/.bashrc
в my ~/.bash_profile
не работал для установленной программы Terminal.
Но затем я перешел к раскрывающемуся меню « Правка»> «Настройки профиля » , вкладка « Заголовок и команда » и выбрал команду «Выполнить» в качестве оболочки входа в раздел команд на этой странице.
После этого запуск нового терминала показывает желаемый результат, когда я набираю
type rvm|head -1
т.е. "rvm - это функция". Этого не было, пока я не внес это изменение, и это единственное изменение, которое я сделал после изменений .bash_profile
и .bashrc
, описанных в других ответах здесь.
Прежде всего позвольте мне сказать вам, что ~/.bashrc
это файл, который выполняется каждый раз, когда вызывается вторая оболочка (например, при запуске сценария оболочки), и ~/.profile
вызывается при каждом входе в систему.
Поэтому я рекомендую вам написать . ~/.bashrc
команду в вашем ~/.profile
файле, и эта команда будет выполнять файл bashrc каждый раз, когда вы входите в систему.
Я столкнулся с той же проблемой после установки rbenv на моем удаленном сервере (Digital Ocean) Ubuntu 16.04.
Как-то создал ~/.bash_profile
. То же самое ~/.bashrc
и в системе OS X.
А убунту начал только читать ~/.bash_profile
, но не ~/.bashrc
так как надо.
Поэтому я просто сделал резервную копию своих данных ~/.bash_profile
с помощью этого:
mv ~/.bash_profile ~/.bash_profile.bak
И переименовал старый ~/.bashrc
в~/.bash_profile
mv ~/.bashrc ~/.bash_profile
Это сработало для меня. После моего входа в систему по ssh у меня все загружается в ~/.bashrc
.
В случае, если это может помочь кому-то еще...
Убедитесь, что вы редактируете правильный .bashrc
файл для правильного пользователя. У меня была аналогичная проблема с использованием Vagrant. После запуска vagrant ssh
мой .bashrc
файл не запускался. Решение было простым: я думал, что vagrant входит в систему с пользователем с именем vagrant, а на самом деле я входил в систему как другой пользователь. Значит, я редактировал не тот .bashrc
файл. После редактирования правильного .bashrc
файла мои псевдонимы были распознаны.
Чтобы сохранить вход в систему в стиле OSX .profile
и поддерживать нормальное поведение bash .bashrc
, вы можете использовать .bashrc
файл, если вы переключаетесь между обычным nix и OSX, предоставляя символическую ссылку на ваш .bashrc
файл с именем .bash_profile
. Просто убедитесь, что этот файл еще не существует, прежде чем пытаться это сделать, но я делаю это так.
ln -s .bashrc .bash_profile
.bash_profile
) и инициализация на каждом уровне оболочки ( .bashrc
)./etc/bashrc предназначен для глобальных профилей в системах Mac. Вы можете добавить: alias ls="ls -G" в начало этого файла, и все будет хорошо, у всех будут раскрашенные файлы и папки в системе, поэтому вам не придется устанавливать ничего дополнительно для каждого отдельного пользователя. Вы также заметите, что вместе с «sudo su -» для рутирования у вас все равно будут раскрашенные файлы и папки без лишних головных болей.
Еще один забавный совет: при использовании Mac Iterm2 импорт цветовых профилей сразу же отображает цвет файлов и папок в соответствии с вашей цветовой схемой после установки этого параметра «/etc/bashrc».
boehj
виолончель
zsh
оболочку по умолчанию (не iebash
:), настроенную в OS X 2019+ (в настоящее время Catalina), см. apple.stackexchange.com/a/338622/192005 .без холма
мммммм
без холма
без холма
Франклин Ю