Encontré el .bashrc
archivo y quiero saber su propósito/función. ¿Y cómo y cuándo se utiliza?
Respuesta1
.bashrc
es una fiestascript de shellque Bash se 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.
Usted coloca comandos aquí para configurar el shell para usarlo en su entorno particular o para personalizar cosas según sus preferencias. Una cosa común para poner .bashrc
sonaliasque quieres estar siempre disponible.
.bashrc
se ejecuta encadalanzamiento de shell interactivo. Si usted dice:
$ bash ; bash ; bash
y luego golpea Ctrl-Dtres veces, .bashrc
se ejecutará 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 ocurre cuando ejecuta un script de shell desde un archivo.
Contraste .bash_profile
y .profile
que sólo se ejecutan al inicio de un nuevo shell de inicio de sesión. ( bash -l
) Usted elige si un comando ingresa .bashrc
o no .bash_profile
dependiendo de si desea que se ejecute una vez o para cada inicio del shell interactivo.
Como contraejemplo de los alias, que prefiero poner en .bashrc
, querrás hacer PATH
ajustes en .bash_profile
su lugar, ya que estos cambios normalmente no sonidempotente:
export PATH="$PATH:/some/addition"
Si coloca eso en .bashrc
su lugar, cada vez que inicie un subshell interactivo, :/some/addition
se pegará al final de la PATH
parte posterior, creando trabajo adicional para el shell cuando escriba mal un comando.
Obtienes un nuevo shell Bash interactivo cada vez quedesembolsarvi
con :sh
, por ejemplo.
Respuesta2
El propósito de un .bashrc
archivo es proporcionar un lugar donde pueda configurar variables, funciones y alias, definir su mensaje (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.
Uno súper mínimo podría tener lo siguiente:
export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"
Eso es todo lo que realmente sabes para empezar.
Aquí está la versión "exagerada", útil para desarrolladores experimentados:
Un desarrollador experimentado suele tener mucho más.
Puedes ver el mío aquí.(imagen 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. Configure mi archivo de historial para ignorar los duplicados y ser mucho más grande que el predeterminado.
-2. Opción de color ls
dependiendo de si estás usando Linux u OSX
-3. Función " md
" para crear y cd en un directorio con un comando
-4. Encuentre la rama de git actual si está en un repositorio de git y...
-5. -9. Defina un mensaje de PS1 increíble, como en
-10. Mensaje de PS2 mejorado
-11. Establezca vi como editor en la línea de comando
-12. Establezca vi como editor predeterminado
-13. ejecutar mi .bash_aliases
archivo si existe
-14. Ejecute mi script de finalización de pestañas de git (para controles remotos y sucursales) si existe.
-15. Ejecute autojump si existe
-16. Permita el cd sin escribir la parte del cd si la versión de bash >= 4
-17. Ejecute un script de finalización de bash si existe
-18. Utilice TMUX si está presente
-19. Agregue rvm a mi RUTA
-20. Utilice rvm si existe.
He hecho esto portátil para que funcione en cualquiera de mis máquinas Linux u OSX sin personalización; por lo tanto, se realizan una serie de pruebas de presencia antes de usar ciertas funciones y otros scripts.
Esto también hace que sea más fácil usar todo el archivo inmediatamente en una nueva máquina sin tener problemas que afecten la apertura de una nueva ventana de terminal.
RECORDATORIO: si cambia su .bashrc, asegúrese de iniciar una nueva ventana de terminal para asegurarse de que funcione ANTES de reiniciar (mejor práctica: hágalo inmediatamente después del cambio). Si alguna vez estropea su .bashrc y reinicia, ¡ES POSIBLE QUE NO PUEDA INICIAR SESIÓN! Personalmente, también creo un segundo usuario 'administrador' en máquinas personales para que, en caso de emergencia (inicio de sesión roto), pueda iniciar sesión y luego usar sudo para arreglar mi otro archivo .bashrc de inicio de sesión.
Respuesta3
Es un bash
archivo de configuración.
Shells interactivos (sin inicio de sesión), luego la configuración se lee desde estos archivos:
$HOME/.bashrc
Para los shells de inicio de sesión, la configuración se lee desde estos archivos:
/etc/profile
(Siempre obtenido)$HOME/.bash_profile
(El resto de estos archivos se revisan en orden hasta que se encuentra uno y luego no se lee ningún otro)$HOME/.bash_login
$HOME/.profile
En la imagen siguiente se muestra una ilustración sencilla de cómo y cuándo se cargan.
Agregué un echo
a mi .bashrc
y.bash_profile
ver man bash
para más información