Ответы:
.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вместо этого.
.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) и определить другие параметры, которые вы хотите использовать при каждом запуске, когда вы открываете новое окно терминала.
Он работает, будучи запущенным каждый раз, когда вы открываете новый терминал, окно или панель.
Вы можете увидеть мой здесь (рис с подсветкой синтаксиса) :
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 без настройки - следовательно, перед использованием определенных функций и других сценариев выполняется ряд тестов на наличие.
Это также облегчает немедленное использование всего файла на новом компьютере без проблем, которые влияют на открытие нового окна терминала.
Это bashфайл конфигурации.
Интерактивные (не входящие в систему) оболочки, затем конфиг читается из этих файлов:
$HOME/.bashrcДля Оболочек входа в систему конфигурация читается из этих файлов:
/etc/profile (Всегда с источником)$HOME/.bash_profile (остальные файлы проверяются по порядку, пока один не найден, остальные не читаются)$HOME/.bash_login$HOME/.profileПростая иллюстрация того, как / когда они загружены, представлена на рисунке ниже.
Я добавил echoк моему .bashrcи.bash_profile
см. man bashдля получения дополнительной информации
.bashrcи различие между содержанием вашего ответа .bashrcи .bash_profileего содержанием. Не отчаивайтесь, вы прилагаете честные усилия, но старайтесь сосредоточиться на ответах на вопросы с некоторым содержанием, не покрытым другими ответами.