Ответы:
.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
его содержанием. Не отчаивайтесь, вы прилагаете честные усилия, но старайтесь сосредоточиться на ответах на вопросы с некоторым содержанием, не покрытым другими ответами.