Відповіді:
.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 (для віддалених та гілок), якщо він існує.
-15. Виконати автоперетворювач, якщо він існує
-16. Дозволити cd'ing, не набираючи частину CD, якщо версія bash> = 4
-17. Виконати скрипт завершення bash, якщо він існує
-18. Використовуйте TMUX, якщо він присутній
-19. Додайте rvm до мого ПАТ-
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
яка охоплює зміст вашої відповіді. Не віддавайте духу, ви докладаєте чесних зусиль, але намагайтеся зосередитись на відповіді на запитання з певним вмістом, не охопленим іншими відповідями.