Qué -x
significa aquí:
if [ -x /etc/rc.local ] then
¿Cómo puedo encontrar esta página de manual if
?
help if
?
Qué -x
significa aquí:
if [ -x /etc/rc.local ] then
¿Cómo puedo encontrar esta página de manual if
?
help if
?
Respuestas:
De las man bash
páginas (especialmente la sección EXPRESIONES CONDICIONALES):
-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file
True if file exists and is executable.
[...]
test
en bash, no estás invocando el test
binario. En cambio, estás invocando a bash test
incorporado, que tiene documentación en help test
, entre otros lugares. man test
puede ser engañoso en algunos casos por esa razón.
if
en sí es una palabra clave de shell, por lo que puede encontrar información al respecto help if
. if
solo se ramifica en función de si el siguiente comando devuelve verdadero (0) o falso (no cero). Sin embargo, lo que realmente quieres es man [
o man test
dónde [
es un alias test
. Esa declaración se está ejecutando realmente test -x /etc/rc.local
, lo que prueba para ver si ese archivo existe y si es ejecutable (o tiene permiso de búsqueda).
man [
también funciona
if
no es shell incorporado, es palabra clave de shell. Ejecute este comando type if
para verificar eso.
De info test
:
`-x FILE'
True if FILE exists and execute permission is granted (or search permission, if it is a directory).
Se necesita permiso de ejecución en un directorio para poder crear un CD en él (es decir, hacer que algún directorio sea su directorio de trabajo actual).
Se necesita ejecutar en un directorio para acceder a la información de "inodo" de los archivos que contiene. Necesita esto para buscar en un directorio para leer los inodos de los archivos dentro. Por esta razón, el permiso de ejecución en un directorio a menudo se denomina permiso de búsqueda.