Я могу подтвердить, что обновление до (переустановка) Vagrant v.1.7.4 исправило ошибки. https: // docs. vagrantup.com/v2/installation/index.html
Был запрос на вытягивание, который исправил его для более поздних версий, чем 1.7.2. https://github.com/mitchellh/vagrant / issues / 5572
Да, вы правы.
Оболочка выполняет перенаправление перед выполнением команды. Когда оболочка запускает команду, она соответствующим образом настраивает стандартный ввод, вывод и ошибку новой команды. По умолчанию они подключены к терминалу (или тому, к чему подключена оболочка ). Когда присутствуют перенаправления, соответствующие файловые дескрипторы подключаются к соответствующим файлам (или каналам и т. д. ). Нет буферизации и т.д. — поэтому оболочка не накапливает вывод программы и потом не записывает его в файл; он соединяет вывод программы с файлом, и это касается всего.
Это означает, что файлы необходимо открыть перед выполнением команды.
Вы можете узнать больше об этом в главе POSIX о языке оболочки . В первом разделе перечисляется последовательность операций, которые оболочка выполняет перед выполнением команды; вы увидите, что перенаправление происходит до выполнения команды.
Поскольку ls
запускается с открытым файлом как стандартный вывод, очевидно, что файл необходимо создать до выполнения программы ls
.
если вы хотите получить больше информации, вы можете ознакомиться со стандартом POSIX для оболочки:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sh.html
и описание командного языка оболочки:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18