$ whatis source
source: nothing appropriate.
$ man source
No manual entry for source
$ source
bash: source: filename argument required
source: usage: source filename [arguments]
Existe y es ejecutable. ¿Por qué no hay documentación al respecto en Ubuntu? ¿Qué hace? ¿Cómo puedo instalar documentación al respecto?
bash
shell
documentation
Andrea Ambu
fuente
fuente
$ type source
source is a shell built-in
$ whatis source
source (1) - bash built-in commands, see bash(1)
. Además,man source
me lleva a lasBASH_BUILTINS(1)
páginas del manual. Esto está en Fedora por cierto, no tengo idea de por qué esos paquetes de Debian no están (o están mal) documentados.Respuestas:
source
es un comando incorporado de bash shell que ejecuta el contenido del archivo pasado como argumento, en el shell actual . Tiene un sinónimo en.
(punto).fuente
source
un comando específico de bash o también lo tienen otros shells? (Estoy pidiendo que las etiquetas sean correctas en la pregunta ...)source
estuvo presente en el caparazón de Bourne y, por lo tanto, probablemente presente en todos sus descendientes. en.wikipedia.org/wiki/Bourne_shell . Sé que no todos los shells tienen elsource
comando, menos seguro de qué shells lo contienen.source
no estaba presente en el shell Bourne, es una extensión de GNU que llegó mucho más tarde. La sintaxis original y aún portátil (POSIX) es utilizar el comando "punto", es decir, en su.
lugar. Personalmente, nunca usosource
dado que es más largo para escribir y no tiene valor agregado. Supongo que su propósito principal es hacer que los scripts sean más legibles para los novatos.source
no solo es más descriptivo, sino que parece algo más que un error tipográfico. He tenido personas que omiten el punto / punto cuando envío comandos técnicos por correo electrónico.source
en un "archivo de configuración" que contiene principalmente asignaciones variables. Las asignaciones variables luego controlan las cosas que hace el resto del script. Por supuesto, un buen script establecerá las variables en valores predeterminados sensibles antes desource
, o al menos buscará valores válidos.¡Ten cuidado!
./
y nosource
son exactamente lo mismo ../script
ejecuta el script como un archivo ejecutable, inicia un nuevo shell para ejecutarlosource script
lee y ejecuta comandos del nombre del archivo en el entorno actual del shellNota:
./script
no lo es. script
, pero. script
==source script
https://askubuntu.com/questions/182012/is-there-a-difference-between-and-source-in-bash-after-all?lq=1
fuente
./ == source == .
Es útil conocer el comando 'tipo':
cada vez que algo es un caparazón incorporado, es hora de hacerlo
man bash
.fuente
man
)help {builtin-name}
, es decirhelp source
.help
no funciona en todas partes (al menos en zsh).type
hace.. (un punto) es un comando incorporado de bash shell que ejecuta los comandos de un archivo pasado como argumento, en el shell actual. 'fuente' es sinónimo de '.'.
Desde la página de manual de Bash:
fuente
'fuente' es la versión larga de '.' mando. En el indicador bash se puede hacer:
para recargar su configuración de bash (¿cambiado?) para bash actual en ejecución.
La versión corta sería:
La página del manual:
fuente
source
El comando ejecuta el script proporcionado (el permiso ejecutable no es obligatorio ) en el entorno actual del shell, mientras que./
ejecuta el script ejecutable proporcionado en un nuevo shell.source
comando tiene un sinónimo. filename
.Para que quede más claro, eche un vistazo al siguiente script, que establece el alias.
make_alias
Ahora tenemos dos opciones para ejecutar este script. Pero con solo una opción, el alias deseado para el shell actual se puede crear entre estas dos opciones.
Opción 1:
./make_alias
Haga el script ejecutable primero.
Ejecutar
Verificar
Salida
Whoops! Alias se ha ido con el nuevo caparazón.
Vayamos con la segunda opción.
Opcion 2:
source make_alias
Ejecutar
o
Verificar
Salida
Sí, Alias está listo.
fuente
En caso de duda, lo mejor es usar el
info
comando:fuente
Escriba el comando "fuente de ayuda" en su shell.
Obtendrá una salida como esta:
fuente
Del Proyecto de documentación de Linux, Advanced Bash Scripting Guide,
Capítulo 15 - Comandos internos y Builtins :
Entonces, para aquellos familiarizados con el lenguaje de programación C, el abastecimiento de un archivo tiene un efecto similar al de la
#include
directiva.Tenga en cuenta también que puede pasar argumentos posicionales al archivo de origen, como:
fuente
source
podría llevar argumentos o usoreturn
.Cabe señalar que a pesar de ser un comando impresionante, ni
source
tampoco su forma abreviada de.
que la fuente de más de un archivo, significadoo
será no trabajar.
Podemos retroceder usando
for
bucles, pero emitiría el ejecutable muchas veces, creando múltiples comandos o emitiéndolo.Conclusión:
source
no toma múltiples archivos como entrada. El argumento tiene que ser uno.Lo que apesta en mi humilde opinión.
fuente
Con la fuente, puede pasar variables o funciones de otro archivo a su script y usarlas sin tener que volver a escribirlas.
FI:
Salud
fuente