Что -x
значит здесь:
if [ -x /etc/rc.local ] then
Как я могу найти эту страницу руководства для if
?
help if
?
Что -x
значит здесь:
if [ -x /etc/rc.local ] then
Как я могу найти эту страницу руководства для if
?
help if
?
Ответы:
Со man bash
страниц (особенно в разделе «Условные выражения»):
-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
в bash, вы не вызываете test
двоичный файл. Вместо этого вы используете test
встроенную в bash встроенную документацию help test
, в том числе. man test
может вводить в заблуждение в некоторых случаях по этой причине.
if
само по себе является ключевым словом оболочки, поэтому вы можете найти информацию о нем с помощью help if
. if
сама ветвится только в зависимости от того, возвращает ли следующая команда true (0) или false (не ноль). Что вы действительно хотите, хотя, man [
или man test
, где [
псевдоним для test
. Этот оператор фактически выполняется test -x /etc/rc.local
, который проверяет, существует ли этот файл и является ли он исполняемым (или имеет разрешение на поиск).
man [
тоже работает
if
- это не оболочка, встроенная в ключевое слово shell. Для проверки запустите эту команду type if
.
От info test
:
`-x FILE'
True if FILE exists and execute permission is granted (or search permission, if it is a directory).
Разрешение на выполнение требуется для каталога, чтобы иметь возможность CD в него (то есть, чтобы сделать некоторый каталог вашим текущим рабочим каталогом).
Выполнение необходимо для каталога, чтобы получить доступ к информации «inode» файлов внутри. Это необходимо для поиска в каталоге для чтения инодов файлов внутри. По этой причине разрешение на выполнение в каталоге часто называется разрешением поиска.