Подтвердить что ты не робот

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" )?

Любые комментарии приветствуются.

Ура!

4b9b3361

Ответ 1

Параметр -x запускает оболочку BASH в режиме отладки. Вы можете увидеть все сведения о том, как обрабатывается ваша команда /script. Это хороший способ найти некоторые ошибки, если ваш script не делает то, что вы ожидаете

И так же, как сказал Алекс в комментарии выше. Чтобы выполнить команду в BASH, вы должны использовать опцию -c, например bash -x -c ls.

Для получения дополнительной информации см. man bash (set встроенная команда).

Ответ 2

  • bash -x <file> запускает script <file> с трассировкой каждой выполняемой команды

  • test -x <file> проверяет, имеет ли <file> разрешения на выполнение для текущего пользователя.

Кажется, что вы путаете эти два.