.bashrcэто сценарий оболочки , который Bash запускается всякий раз , когда он запускается в интерактивном режиме . Он инициализирует сеанс интерактивной оболочки. Вы можете поместить в этот файл любую команду, которую сможете ввести в командной строке.
Вы помещаете здесь команды, чтобы настроить оболочку для использования в вашей конкретной среде или для настройки вещей в соответствии с вашими предпочтениями. Обычная вещь - .bashrcэто псевдонимы, которые вы хотите всегда быть доступными.
.bashrcзапускается при каждом запуске интерактивной оболочки. Если вы говорите:
$ bash ; bash ; bash
а затем ударил Ctrl-Dтри раза, .bashrcбудет работать три раза. Но если вы скажете это вместо:
$ bash -c exit ; bash -c exit ; bash -c exit
тогда .bashrcне будет работать вообще, так как -cделает вызов Bash неинтерактивным. То же самое верно, когда вы запускаете сценарий оболочки из файла.
Контраст .bash_profileи .profileкоторые запускаются только в начале новой оболочки входа в систему. ( bash -l) Вы выбираете, будет ли команда идти .bashrcпротив, в .bash_profileзависимости от того, хотите ли вы запустить ее один раз или для каждого запуска интерактивной оболочки.
В качестве контрпримеров к псевдонимам, которые я предпочитаю использовать .bashrc, вместо этого вы хотите внести PATHкоррективы .bash_profile, поскольку эти изменения обычно не являются идемпотентными :
export PATH="$PATH:/some/addition"
Если вы добавите это .bashrcвместо этого, каждый раз, когда вы запускаете интерактивную вложенную оболочку, она :/some/additionснова будет привязана к концу PATH, создавая дополнительную работу для оболочки при неправильном вводе команды.
Вы получаете новый интерактивный Bash оболочки , когда вы обстреливать изvi с :sh, например.
Незначительный каламбур: в отличии от большинства других оболочек, Баш ли не автоматически загружает конфигурационный файл для каждого, например , .bashrcкогда он начал в качестве оболочки. Иногда это может привести к неожиданному поведению . Обычным решением является источником .bashrcс .profileили .bash_profileвместо этого.
Илмари Каронен
@IlmariKaronen Так .bashrcкак не предназначен для использования другими оболочками, лучше не брать его из источника .profile(который может использоваться другими не bashоболочками).
chepner
@IlmariKaronen то , что происходит (читай: как я могу отладить почему) , когда source ~/.bashrcили . ~/.bashrcили [[ -f ~/.bashrc ]] && source. ~/.bashrcили [ -f ~/.bashrc ] && source ~/.bashrcне работают?
@WarrenYoung Я бы, но я понял, что .bashrcэто действительно источник (с использованием рекомендуемой команды от superuser.com/a/183980/128768 ). Проблема я лицо фактически не сорсинг с https://github.com/junegunn/fzfпомощью этой команды внутри .bashrc: source ~/.fzf.bash. Я запускаю новый терминал, потом Ctrl+ Rи получаю `__fzf_history__`bash: fzf: command not found. Я использую источник вручную, .bashrcи тот же самый ярлык запускает fzf, как и ожидалось. Извинения за шум здесь.
Никос Александрис
20
Назначение .bashrcфайла - предоставить место, где вы можете установить переменные, функции и псевдонимы, определить приглашение (PS1) и определить другие параметры, которые вы хотите использовать при каждом запуске, когда вы открываете новое окно терминала.
Он работает, будучи запущенным каждый раз, когда вы открываете новый терминал, окно или панель.
HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al >/dev/null 2>&1&& alias ls='ls -F --color=al'|| alias ls='ls -G'
md (){[ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch (){ git branch 2>/dev/null | sed -e '/^[^*]/d'-e 's/* \(.*\)/\1/';}
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'set-o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases &&. $_
test -f ~/.git-completion.bash &&. $_
test -s ~/.autojump/etc/profile.d/autojump &&. $_
[ ${BASH_VERSINFO[0]}-ge 4]&& shopt -s autocd
[-f /etc/bash_completion ]&&! shopt -oq posix &&./etc/bash_completion
[-z $TMUX ]&& export TERM=xterm-256color&& exec tmux
export PATH="$PATH:$HOME/.rvm/bin"# Add RVM to PATH for scripting[[-s "$HOME/.rvm/scripts/rvm"]]&& source "$home/.rvm/scripts/rvm"
Объяснение:
-1. Настройте мой файл истории, чтобы игнорировать дубликаты и быть намного больше, чем по умолчанию.
-2. Вариант цвета в lsзависимости от того, используете ли вы linux или OSX
-3. Функция " md" сделать и перейти в каталог с помощью одной команды
-4. Найти текущую ветку git, если в git repo и ...
-5. -9. Определите удивительное приглашение PS1, как в
-10. Улучшена подсказка PS2
-11. Установите vi в качестве редактора в командной строке
-12. Установите vi как редактор по умолчанию
-13. выполнить мой .bash_aliasesфайл, если он существует
-14. Выполните мой скрипт завершения git tab (для удаленных и филиалов), если он существует.
-15. Выполнить автопрыжок, если он существует
-16. Разрешить cd'ing без ввода части cd, если версия bash> = 4
-17. Выполнить скрипт завершения bash, если он существует
-18. Используйте TMUX, если он присутствует
-19. Добавить рвм в мой путь
-20. Используйте rvm, если он существует.
Я сделал этот портативный компьютер таким, чтобы он работал на любом из моих компьютеров с Linux или OSX без настройки - следовательно, перед использованием определенных функций и других сценариев выполняется ряд тестов на наличие.
Это также облегчает немедленное использование всего файла на новом компьютере без проблем, которые влияют на открытие нового окна терминала.
Это не добавляет дополнительной ценности к старому вопросу. Кроме того, я вижу, что вы новичок в Unix и Linux, старайтесь не публиковать картинки текста, вместо этого лучше использовать форматирование блока кода и копировать его с консоли. Это позволяет искать текст / копировать / и т.д. В случае вашего примера на самом деле нет никаких сложных команд или чего-либо, что было бы полезно искать, но хорошая практика для других ответов.
Сентиман
1
Я не уверен, что полностью понимаю вашу ссылку на «старый вопрос». Он находится в верхнем списке вопросов и имеет отношение к просмотрам 60 тыс. Я думал, что добавленная ценность прибыла из формата, в противоположность диалогу / предположению как предыдущие ответы. но формат был также отредактирован. Я буду помнить ваши комментарии об использовании блоков кода, спасибо.
Тимоти Л.Дж. Стюарт
2
Он находится в верхней части списка активных вопросов, потому что вы опубликовали ответ. Вопрос был изначально задан в 2014 году и принял ответ. В принятом ответе указывается цель .bashrcи различие между содержанием вашего ответа .bashrcи .bash_profileего содержанием. Не отчаивайтесь, вы прилагаете честные усилия, но старайтесь сосредоточиться на ответах на вопросы с некоторым содержанием, не покрытым другими ответами.
Ответы:
.bashrc
это сценарий оболочки , который Bash запускается всякий раз , когда он запускается в интерактивном режиме . Он инициализирует сеанс интерактивной оболочки. Вы можете поместить в этот файл любую команду, которую сможете ввести в командной строке.Вы помещаете здесь команды, чтобы настроить оболочку для использования в вашей конкретной среде или для настройки вещей в соответствии с вашими предпочтениями. Обычная вещь -
.bashrc
это псевдонимы, которые вы хотите всегда быть доступными..bashrc
запускается при каждом запуске интерактивной оболочки. Если вы говорите:а затем ударил Ctrl-Dтри раза,
.bashrc
будет работать три раза. Но если вы скажете это вместо:тогда
.bashrc
не будет работать вообще, так как-c
делает вызов Bash неинтерактивным. То же самое верно, когда вы запускаете сценарий оболочки из файла.Контраст
.bash_profile
и.profile
которые запускаются только в начале новой оболочки входа в систему. (bash -l
) Вы выбираете, будет ли команда идти.bashrc
против, в.bash_profile
зависимости от того, хотите ли вы запустить ее один раз или для каждого запуска интерактивной оболочки.В качестве контрпримеров к псевдонимам, которые я предпочитаю использовать
.bashrc
, вместо этого вы хотите внестиPATH
коррективы.bash_profile
, поскольку эти изменения обычно не являются идемпотентными :Если вы добавите это
.bashrc
вместо этого, каждый раз, когда вы запускаете интерактивную вложенную оболочку, она:/some/addition
снова будет привязана к концуPATH
, создавая дополнительную работу для оболочки при неправильном вводе команды.Вы получаете новый интерактивный Bash оболочки , когда вы обстреливать из
vi
с:sh
, например.источник
.bashrc
когда он начал в качестве оболочки. Иногда это может привести к неожиданному поведению . Обычным решением является источником.bashrc
с.profile
или.bash_profile
вместо этого..bashrc
как не предназначен для использования другими оболочками, лучше не брать его из источника.profile
(который может использоваться другими неbash
оболочками).source ~/.bashrc
или. ~/.bashrc
или[[ -f ~/.bashrc ]] && source. ~/.bashrc
или[ -f ~/.bashrc ] && source ~/.bashrc
не работают?.bashrc
это действительно источник (с использованием рекомендуемой команды от superuser.com/a/183980/128768 ). Проблема я лицо фактически не сорсинг сhttps://github.com/junegunn/fzf
помощью этой команды внутри.bashrc
:source ~/.fzf.bash
. Я запускаю новый терминал, потомCtrl
+R
и получаю`__fzf_history__`bash: fzf: command not found
. Я использую источник вручную,.bashrc
и тот же самый ярлык запускает fzf, как и ожидалось. Извинения за шум здесь.Назначение
.bashrc
файла - предоставить место, где вы можете установить переменные, функции и псевдонимы, определить приглашение (PS1) и определить другие параметры, которые вы хотите использовать при каждом запуске, когда вы открываете новое окно терминала.Он работает, будучи запущенным каждый раз, когда вы открываете новый терминал, окно или панель.
Вы можете увидеть мой здесь (рис с подсветкой синтаксиса) :
Объяснение:
-1. Настройте мой файл истории, чтобы игнорировать дубликаты и быть намного больше, чем по умолчанию.
-2. Вариант цвета в
ls
зависимости от того, используете ли вы linux или OSX-3. Функция "
md
" сделать и перейти в каталог с помощью одной команды-4. Найти текущую ветку git, если в git repo и ...
-5. -9. Определите удивительное приглашение PS1, как в
-10. Улучшена подсказка PS2
-11. Установите vi в качестве редактора в командной строке
-12. Установите vi как редактор по умолчанию
-13. выполнить мой
.bash_aliases
файл, если он существует-14. Выполните мой скрипт завершения git tab (для удаленных и филиалов), если он существует.
-15. Выполнить автопрыжок, если он существует
-16. Разрешить cd'ing без ввода части cd, если версия bash> = 4
-17. Выполнить скрипт завершения bash, если он существует
-18. Используйте TMUX, если он присутствует
-19. Добавить рвм в мой путь
-20. Используйте rvm, если он существует.
Я сделал этот портативный компьютер таким, чтобы он работал на любом из моих компьютеров с Linux или OSX без настройки - следовательно, перед использованием определенных функций и других сценариев выполняется ряд тестов на наличие.
Это также облегчает немедленное использование всего файла на новом компьютере без проблем, которые влияют на открытие нового окна терминала.
источник
Это
bash
файл конфигурации.Интерактивные (не входящие в систему) оболочки, затем конфиг читается из этих файлов:
$HOME/.bashrc
Для Оболочек входа в систему конфигурация читается из этих файлов:
/etc/profile
(Всегда с источником)$HOME/.bash_profile
(остальные файлы проверяются по порядку, пока один не найден, остальные не читаются)$HOME/.bash_login
$HOME/.profile
Простая иллюстрация того, как / когда они загружены, представлена на рисунке ниже.
Я добавил
echo
к моему.bashrc
и.bash_profile
см.
man bash
для получения дополнительной информацииисточник
.bashrc
и различие между содержанием вашего ответа.bashrc
и.bash_profile
его содержанием. Не отчаивайтесь, вы прилагаете честные усилия, но старайтесь сосредоточиться на ответах на вопросы с некоторым содержанием, не покрытым другими ответами.