.bashrces 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 .bashrcson los alias que desea que siempre estén disponibles.
.bashrcse ejecuta en cada lanzamiento de shell interactivo. Si usted dice:
$ bash ; bash ; bash
y luego golpeó Ctrl-Dtres veces, .bashrccorrerá tres veces. Pero si dices esto en su lugar:
$ bash -c exit ; bash -c exit ; bash -c exit
entonces .bashrcno se ejecutará en absoluto, ya que -chace que la llamada Bash no sea interactiva. Lo mismo es cierto cuando ejecuta un script de shell desde un archivo.
Contraste .bash_profiley .profileque solo se ejecutan al comienzo de un nuevo shell de inicio de sesión. ( bash -l) Usted elige si un comando va en .bashrccontra .bash_profiledependiendo 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 PATHajustes en su .bash_profilelugar, ya que estos cambios generalmente no son idempotentes :
export PATH="$PATH:/some/addition"
Si coloca eso en su .bashrclugar, cada vez que inicia un sub-shell interactivo, :/some/additionse agregaría al final del PATHnuevo, 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.
Pequeñas objeciones: a diferencia de la mayoría de los otros shells, bash no carga automáticamente el archivo de configuración por instancia .bashrccuando 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 .bashrcde .profileo en su .bash_profilelugar.
Ilmari Karonen
@IlmariKaronen Dado .bashrcque no está destinado a ser utilizado por otros shells, es mejor no obtenerlo .profile(que podría ser utilizado por otros no bashshells).
@WarrenYoung Lo haría, pero me di cuenta de que de .bashrchecho 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/fzfa través de este comando en el interior .bashrc: source ~/.fzf.bash. Lanzo una nueva terminal, luego Ctrl+ Ry obtengo `__fzf_history__`bash: fzf: command not found. .bashrcObtengo manualmente y el mismo atajo de teclado inicia fzf como se esperaba. Disculpas por el ruido aquí.
Nikos Alexandris
20
El propósito de un .bashrcarchivo 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.
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 lssegú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_aliasesarchivo 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.
Esto realmente no agrega valor adicional a una pregunta anterior. Además, veo que eres nuevo en Unix y Linux, intenta no publicar imágenes de texto, en su lugar, es mejor usar el formato de bloque de código y copiarlo desde tu consola. Esto permite buscar / copiar el texto, etc. En el caso de su ejemplo, en realidad no hay comandos complicados ni nada que sea bueno para buscar, sino una buena práctica para otras respuestas.
Centimane
1
No estoy seguro de entender completamente su referencia a la 'pregunta anterior'. Está en la lista de preguntas principales y es relevante con 60k vistas. Pensé que el valor agregado provenía del formato, a diferencia de un diálogo / conjetura como las respuestas anteriores. pero el formato también ha sido editado. Tendré en cuenta sus comentarios sobre el uso de bloques de código, gracias.
Timothy LJ Stewart
2
Está en la parte superior de la lista de preguntas 'activas' porque publicaste una respuesta. La pregunta se hizo originalmente en 2014 y aceptó una respuesta. La respuesta aceptada establece el propósito .bashrcy distingue la diferencia entre .bashrcy .bash_profileque 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.
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:y luego golpeó Ctrl-Dtres veces,
.bashrc
correrá tres veces. Pero si dices esto en su lugar: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 hacerPATH
ajustes en su.bash_profile
lugar, ya que estos cambios generalmente no son idempotentes :Si coloca eso en su
.bashrc
lugar, cada vez que inicia un sub-shell interactivo,:/some/addition
se agregaría al final delPATH
nuevo, creando trabajo adicional para el shell cuando escribe mal un comando.Se obtiene un nuevo intérprete de comandos interactivo siempre que desembolsar de
vi
con:sh
, por ejemplo.fuente
.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 nobash
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 dehttps://github.com/junegunn/fzf
a través de este comando en el interior.bashrc
:source ~/.fzf.bash
. Lanzo una nueva terminal, luegoCtrl
+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) :
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.
fuente
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ónfuente
.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.