¿Alguien puede explicar qué significa este comando?
PATH="${GZIP_BINDIR-'/bin'}:$PATH"; export PATH
${GZIP_BINDIR-'/bin'}es un bashpatró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_BINDIRtiene 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 PATHanteriormente tenía:
/usr/sbin:/usr/bin
Ahora tu PATHserá (considerando GZIP_BINDIRque no está configurado):
/bin:/usr/sbin:/usr/bin
export PATHpondrá esto a PATHdisposició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. "PATHyexporten 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 PATHPara 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 PATHfuente
Este comando actualiza la variable PATH.
El
PATHes una variable de entorno que especifica un conjunto de directorios donde se encuentran los programas ejecutables.Esto agrega el valor de otra variable
GZIP_BINDIRsi 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
.bashrcy agrega la línea
luego ejecuta el comando
fuente