1

Я изучаю среду UNIX и у меня есть вопрос .. Когда дело доходит до перенаправления ошибки std в файл, что произойдет, если у файла, к которому мы перенаправляем, есть права на запись, запрещенные пользователю?

Пример:

./command >file 2>&1
./command 2>&1 >file

Что происходит в первую очередь с сообщением об ошибке? Это автоматически сбрасывается? Я получаю одинаковую ошибку для обеих строк, что разрешение не разрешено, но так как система читает слева направо, в чем разница между способом обработки?

Любые ссылки на учебные пособия, которые входят в механизм, стоящий за этим, были бы полезны, так что пока я могу найти информацию о том, как он обрабатывает это, если у нас есть разрешения на запись.

1 ответ1

1

Краткий ответ: команда не будет выполняться вообще.

Объяснение: перенаправление основано на дескрипторах файлов, которые необходимо создать с помощью вызова open() перед выполнением процесса.

Мой Bash просто отверг это:

$ sleep 1 2>&1 > /nonwritable
-bash: /nonwritable: Permission denied

Итак, вы видите, есть защита для большинства снарядов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .