Respuestas:
.bashrc
es un script de shell que Bash ejecuta cada vez que se inicia de forma interactiva. Inicializa una sesión de shell interactiva. Puede poner cualquier comando en ese archivo que pueda escribir en el símbolo del sistema.
Coloca comandos aquí para configurar el shell para su uso en su entorno particular, o para personalizar las cosas según sus preferencias. Una cosa común para poner .bashrc
son los alias que desea que siempre estén disponibles.
.bashrc
se ejecuta en cada lanzamiento de shell interactivo. Si usted dice:
$ bash ; bash ; bash
y luego golpeó Ctrl-Dtres veces, .bashrc
correrá tres veces. Pero si dices esto en su lugar:
$ bash -c exit ; bash -c exit ; bash -c exit
entonces .bashrc
no se ejecutará en absoluto, ya que -c
hace que la llamada Bash no sea interactiva. Lo mismo es cierto cuando ejecuta un script de shell desde un archivo.
Contraste .bash_profile
y .profile
que solo se ejecutan al comienzo de un nuevo shell de inicio de sesión. ( bash -l
) Usted elige si un comando va en .bashrc
contra .bash_profile
dependiendo de si desea que se ejecute una vez o para cada inicio shell interactivo.
Como contraejemplo a los alias, que prefiero poner .bashrc
, desea hacer PATH
ajustes en su .bash_profile
lugar, ya que estos cambios generalmente no son idempotentes :
export PATH="$PATH:/some/addition"
Si coloca eso en su .bashrc
lugar, cada vez que inicia un sub-shell interactivo, :/some/addition
se agregaría al final del PATH
nuevo, creando trabajo adicional para el shell cuando escribe mal un comando.
Se obtiene un nuevo intérprete de comandos interactivo siempre que desembolsar devi
con :sh
, por ejemplo.
.bashrc
cuando se inicia como un shell de inicio de sesión. Esto a veces puede conducir a un comportamiento inesperado . La solución habitual es obtener .bashrc
de .profile
o en su .bash_profile
lugar.
.bashrc
que no está destinado a ser utilizado por otros shells, es mejor no obtenerlo .profile
(que podría ser utilizado por otros no bash
shells).
source ~/.bashrc
o . ~/.bashrc
o [[ -f ~/.bashrc ]] && source. ~/.bashrc
o [ -f ~/.bashrc ] && source ~/.bashrc
no trabajar?
.bashrc
hecho proviene (usando el comando recomendado de superuser.com/a/183980/128768 ). El problema que enfrentamos es en realidad el no abastecimiento de https://github.com/junegunn/fzf
a través de este comando en el interior .bashrc
: source ~/.fzf.bash
. Lanzo una nueva terminal, luego Ctrl
+ R
y obtengo `__fzf_history__`bash: fzf: command not found
. .bashrc
Obtengo manualmente y el mismo atajo de teclado inicia fzf como se esperaba. Disculpas por el ruido aquí.
El propósito de un .bashrc
archivo es proporcionar un lugar donde pueda configurar variables, funciones y alias, definir su solicitud (PS1) y definir otras configuraciones que desee usar cada vez que abra una nueva ventana de terminal.
Funciona ejecutándose cada vez que abre una nueva terminal, ventana o panel.
Puedes ver el mío aquí (foto con resaltado de sintaxis) :
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"
Explicación:
-1. Configurar mi archivo de historial para ignorar duplicados y ser mucho más grande que el predeterminado.
-2. Opción de color ls
según si está utilizando Linux u OSX
-3. Función " md
" para hacer y cd en un directorio con un comando
-4. Encuentra la rama git actual si está en un repositorio git y ...
-5. -9. Defina un impresionante aviso de PS1, como en
-10. Mensaje de PS2 mejorado
-11. Establezca vi como editor en la línea de comando
-12. Establezca vi como el editor predeterminado
-13. ejecutar mi .bash_aliases
archivo si existe
-14. Ejecute mi script de finalización de pestaña git (para controles remotos y ramas) si existe.
-15. Ejecute autojump si existe
-16. Permitir cd'ing sin escribir la parte cd si la versión bash> = 4
-17. Ejecute un script de finalización de bash si existe
-18. Use TMUX si está presente
-19. Añadir rvm a mi RUTA
-20. Use rvm si existe.
He hecho este portátil para que funcione en cualquiera de mis máquinas Linux u OSX sin personalización; por lo tanto, se realizan varias pruebas de presencia antes de usar ciertas funciones y otras secuencias de comandos.
Esto también facilita el uso de todo el archivo inmediatamente en una nueva máquina sin tener problemas que afecten la apertura de una nueva ventana de terminal.
Es un bash
archivo de configuración.
Shells interactivos (sin inicio de sesión), luego la configuración se lee de estos archivos:
$HOME/.bashrc
Para shells de inicio de sesión, la configuración se lee de estos archivos:
/etc/profile
(Siempre de origen)$HOME/.bash_profile
(el resto de estos archivos se verifican en orden hasta que se encuentra uno, luego no se leen otros)$HOME/.bash_login
$HOME/.profile
La ilustración a continuación muestra cómo / cuándo se cargan.
Agregué una echo
a mi .bashrc
y.bash_profile
ver man bash
para más información
.bashrc
y distingue la diferencia entre .bashrc
y .bash_profile
que cubre el contenido de su respuesta. No se desanime, presenta un esfuerzo honesto, pero trate de concentrarse en responder preguntas con algún contenido que no esté cubierto por otras respuestas.