7 votos

¿Qué sucede exactamente cuando escribo ' bash ' en la línea de comandos Terminal en Mac OSX?

Tengo un alias que he añadido a .bashrc, y sólo se activa en el Terminal después de ejecutar el comando 'bash'. Siento que debo saber lo que está pasando aquí, pero yo no. :)

6voto

Daniel Beck Puntos 72548

De man bash:

Cuando un shell interactivo que no es un shell de inicio de sesión se inicia, bash lee y ejecuta órdenes desde ~/.bashrc, si ese archivo existe.

El énfasis es mío

En OS X, todas las ventanas de la Terminal y fichas de ejecución de inicio de sesión de conchas, que es equivalente a correr en bash --login en lugar de bash. ~/.bashrc es, por tanto, ignorados, a menos que explícitamente sourced, por ejemplo, ~/.bash_profile:

Cuando bash se invoca como un proceso interactivo shell de inicio de sesión, [...] primero lee y ejecuta los comandos desde el archivo /etc/profile, si ese archivo existe. Después de leer el archivo, busca ~/.bash_profile, ~/.bash_loginy ~/.profile, en ese orden, y lee y ejecuta los comandos de la primera, que existe y es legible.

Basta con crear ~/.bash_profile si no existe, y añadir la siguiente línea:

. .bashrc

A continuación, .bashrc será cargado incluso para las sesiones de inicio de sesión.

2voto

polynomial Puntos 1264

Dependiendo de la versión de OS X que está utilizando su shell por defecto puede no ser bash. Usted puede verificar esto de escribir(antes de ejecutar 'bash'):

$ echo $SHELL
/bin/zsh

Usted puede cambiar el valor predeterminado de la shell bash así que usted no tiene que seguir ejecutando el comando siguiendo las instrucciones de aquí:

http://serverfault.com/questions/21044/how-do-i-change-a-users-default-shell-in-osx

Desde @chopper3

para <=10.4 - administrador de netinfo, /users/quien/shell

10.5=> - SysPrefs, cuentas, control y haga clic en el usuario, seleccione opciones avanzadas de edición de shell de inicio de sesión de campo.

A más de responder a su pregunta, la .bashrc sólo es utilizado por el shell bash. Si usted quiere usted puede averiguar lo que shell está utilizando y agregar el alias de el .tcshrc o .zshrc como lugar de cambiar todo el uso de bash.

Más info sobre lo que es un shell es:

http://en.wikipedia.org/wiki/Shell_(computación)

y bash específicamente:

http://en.wikipedia.org/wiki/Bash_(Unix_shell)

1voto

caleb Puntos 21

El alias no funciona después de ejecutar bash - funciona mientras se está ejecutando bash.

Básicamente, ~/.bashrc es un archivo que contiene directivas que se ejecutan por bash cada vez que se inicia. El shell por defecto para todas las versiones recientes de Mac OS X es bash, de modo que se ejecute cada vez que abra una Terminal. bash , sin embargo, no por arte de magia conocer a volver a leer sus archivos de configuración cuando se edita, por lo que el alias no ponerse a trabajar de inmediato cuando se agregan a ~/.bashrc. Qué hacer cuando se ejecute bash de su concha es crear otra instancia de bash (que va a leer el archivo de configuración modificado, porque es a partir de arriba). Tenga en cuenta que su instancia original de bash todavía está allí, corriendo detrás de la bash se ejecutó de forma manual. Si cerca de la shell (con la exit comando) vas a volver a su shell original (si la cierra, usted obtendrá un "proceso completado" mensaje de la terminal).

Así que, para volver a su problema: su alias no funcionan hasta bash re-lee su configuración. Usted puede hacer esto por partida bash de nuevo (ya sea mediante la creación de otro shell en el interior de su shell existente mediante la ejecución de bash, o por el cierre y la apertura de su terminal) o, usted puede utilizar el source comando para obtener bash a re-leer un archivo. Así que, después de haber editado ~/.bashrc, do source ~/.bashrc - alias de trabajo, sin empezando bash de nuevo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: