Que hace . .bashrc realmente hacer?

13

Cuando entro en un eg. un nuevo alias en mi .bashrcarchivo No puedo usarlo en esa ventana de terminal de inmediato y hasta hace poco pensé que tenía que reiniciar el terminal para volver a cargar el .bashrcarchivo. Luego descubrí en algún lugar que si escribo

. .bashrc

Esto volverá a cargar el .bashrcarchivo en la ventana actual y no tengo que reiniciar. Esto funciona aletas, pero ¿qué está pasando realmente? ¿Por qué esto vuelve a cargar el .bashrcarchivo?

Pala
fuente
1
Con ."fuente" el archivo. Lo que significa que se está ejecutando básicamente
Der Hochstapler
posible duplicado de ¿Qué hace la fuente?
Dan D.
1
@DanD. Si bien la respuesta es la misma, la pregunta me suena bastante distinta.
Calimo
1
@Dan D. esta pregunta es más acerca de la mening de . . Hasta ahora siempre pensé en eso . como una abreviatura para el directorio actual y .. como una abreviatura para el directorio principal. Nunca me di cuenta . era un alias para la fuente (que a su vez era un concepto completamente nuevo para mí). Si alguien viene aquí y quiere saber la diferencia, encontré ¿Cuál es la diferencia entre ejecutar un script bash y obtener un script bash? para ser muy útil
Spade

Respuestas:

17

Porque .es un comando.

Es un comando de shell incorporado, que lee el archivo con nombre y ejecuta los comandos en el proceso de shell actual.

El shell Bourne Again también tiene sourcecomo sinónimo de este comando. Pero esto es un Bashismo (que el shell Bourne Again tomó del Shell C). Aunque es un Bashismo que el shell Bourne Again comparte con el Shell TENEX C, el Shell Z y otros (pero no el shell Korn, tenga en cuenta). La especificación UNIX única solo estandariza ..

También tenga en cuenta que el comportamiento de ./ sourcesutilmente cambia dependiendo de si el shell Bourne Again se está ejecutando en su modo compatible con POSIX o no. (De nuevo, esto es como otros shells, aunque sus comportamientos no estándar no son los mismos que los de los demás. Con el Z Shell, por ejemplo, hay un mecanismo de script de shell precompilado, y sourcedifiere sutilmente de .su manejo de ruta de búsqueda. The Korn shell .ejecutará funciones de shell, para otro ejemplo).

~/.bashrces simplemente uno de varios archivos cuyos contenidos (dependiendo de cómo se invoque el proceso de shell) se obtienen automáticamente al inicio de shell. No hay nada que prohíba que se obtenga manualmente . Aunque si sus acciones no son idempotentes, es posible que tenga que hacer un trabajo de reparación después.

Otras lecturas

JdeBP
fuente
1

help . te diría:

.: . filename [arguments]

Execute commands from a file in the current shell.

Read and execute commands from FILENAME in the current shell.  The
entries in $PATH are used to find the directory containing FILENAME.
If any ARGUMENTS are supplied, they become the positional parameters
when FILENAME is executed.

Exit Status:
Returns the status of the last command executed in FILENAME; fails if
FILENAME cannot be read.

Diciendo se . .bashrcejecuta (fuentes) el archivo .bashrcque hace que los cambios realizados en el archivo estén disponibles en la sesión actual.

Por defecto, ~/.bashrcse leería al iniciar sesión.

.es sinónimo de source.

devnull
fuente
1

El .comando es lo mismo que el sourcecomando, que ejecuta su .bashrcarchivo. Esto agrega todos los alias que ha definido y cualquier otra configuración / variable de shell en el entorno actual. Desde sourcela página de ayuda:

source: source filename [arguments]
    Execute commands from a file in the current shell.
ethanwu10
fuente