¿Alguien puede explicar qué significa este comando?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
${GZIP_BINDIR-'/bin'}
es un bash
patrón de expansión de parámetros. De man bash
:
${parameter:-word}
Use Default Values. If parameter is unset or null,
the expansion of word is substituted. Otherwise, the value of parameter
is substituted.
Inmediatamente antes de esta parte, la página de manual tiene (gracias a @jwodder por notificar):
Omitting the colon results in a test only for a parameter that is unset.
Como dice la página de manual, establecerá el valor predeterminado de la variable GZIP_BINDIR
. Si GZIP_BINDIR
tiene un valor previamente establecido (que no sea nulo, ya que no lo está usando :
), se usará ese valor; de lo contrario /bin
, se usará como el valor de la variable GZIP_BINDIR
.
Por otro lado, si también desea probar valores nulos, use este patrón (incluir :
):
${GZIP_BINDIR:-'/bin'}
Después de eso $PATH
, se expandirá a los valores que tenía antes. Entonces, si PATH
anteriormente tenía:
/usr/sbin:/usr/bin
Ahora tu PATH
será (considerando GZIP_BINDIR
que no está configurado):
/bin:/usr/sbin:/usr/bin
export PATH
pondrá esto a PATH
disposición de todos los procesos secundarios.
:
de${GZIP_BINDIR-'/bin'}
" No necesariamente.${parameter-word}
es válido también, aunque no parece estar en la página del manual.:-
dice: "Cuando no se realiza la expansión de subcadenas, usando los formularios documentados a continuación (por ejemplo, :-), bash prueba para un parámetro que no está establecido o es nulo. Omitir los dos puntos da como resultado una prueba solo para un parámetro que no está configurado. "PATH
yexport
en un solo comando de la siguiente manera:export PATH="${GZIP_BINDIR-'/bin'}:$PATH"
¿Realmente no hay dos puntos antes del guión dentro de la expansión del parámetro
${GZIP_BINDIR-'/bin'}
?Este tipo de construcción casi siempre se escribe con dos puntos, ya
${GZIP_BINDIR:-'/bin'}
que significa "si $ GZIP_BINDIR es NULL o no está configurado, configúrelo en '/ bin'"Sin embargo, la sintaxis que proporcionó es válida, pero rara.
${GZIP_BINDIR-'/bin'}
(sin dos puntos) significa "si $ GZIP_BINDIR no está configurado, configúrelo en '/ bin'". Si está configurado (se ha declarado) pero no se le ha asignado nada (por ejemplo, es NULL), no se insertará nada.Puede haber un error aquí, aunque como el de colon tras el constructo variable (...}
:
$ PATH ...) será aún si se inserta $ GZIP_BINDIR es fijo pero NULL. Como esto agregaría dos puntos al comienzo de $ PATH, hará que primero se busque en el directorio actual.La mayoría considera que es un problema de seguridad, ya que hace que sea más fácil ejecutar un programa malicioso con el mismo nombre que los comandos estándar con solo ponerlo en el directorio actual.
Para dejar $ PATH sin cambios si $ GZIP_BINDIR está configurado pero NULL (vacío), la sintaxis correcta sería
${GZIP_BINDIR-'/bin:'}$PATH; export PATH
Para dejar $ PATH sin cambios si $ GZIP_BINDIR no está establecido o está establecido pero NULL, la sintaxis correcta sería
${GZIP_BINDIR:-'/bin:'}$PATH; export PATH
fuente
Este comando actualiza la variable PATH.
El
PATH
es una variable de entorno que especifica un conjunto de directorios donde se encuentran los programas ejecutables.Esto agrega el valor de otra variable
GZIP_BINDIR
si sale a la RUTA anterior, de lo contrario use / bin y agréguelo a la RUTAexport se usa para establecer la RUTA disponible para todos los procesos secundarios y subcapas Lea esto para obtener más información sobre
Debe tener en cuenta que esto no es estático y lo perderá una vez que salga de su shell.
Para que esta edición de RUTA sea permanente, debe agregar estas líneas a su
.bashrc
y agrega la línea
luego ejecuta el comando
fuente