Bash -x команда
Я видел, как клиент выполнил команду $bash -x
, чтобы проверить, является ли файл исполняемым (или команда ksh -x
и т.д.), как -x
в операторе if
в оболочке script.
Мой вопрос: Что делает команда $bash -x
?
Моя интерпретация заключалась в том, чтобы запустить команду в новой оболочке bash в текущей оболочке, наследующей одни и те же переменные среды и выполняемой одним и тем же пользователем.
Самое смешное, что я могу сделать $ls
, но не $bash -x ls
, которые дают:
(под AIX 6)
/usr/bin/ls: /usr/bin/ls: cannot execute binary file
Для меня загадка, почему ошибка - угадать, что это связано с привилегией, которая означает, что мое предположение выше неверно.
Кроме того, я считаю, что $bash ls
и $bash -x ls
- это одно и то же (-x
для "execute" )?
Любые комментарии приветствуются.
Ура!
Ответы
Ответ 1
Параметр -x
запускает оболочку BASH в режиме отладки. Вы можете увидеть все сведения о том, как обрабатывается ваша команда /script. Это хороший способ найти некоторые ошибки, если ваш script не делает то, что вы ожидаете
И так же, как сказал Алекс в комментарии выше. Чтобы выполнить команду в BASH, вы должны использовать опцию -c
, например bash -x -c ls
.
Для получения дополнительной информации см. man bash
(set
встроенная команда).
Ответ 2
-
bash -x <file>
запускает script <file>
с трассировкой каждой выполняемой команды
-
test -x <file>
проверяет, имеет ли <file>
разрешения на выполнение для текущего пользователя.
Кажется, что вы путаете эти два.