Я пытался выполнить команду в chroot (довольно в новинку для этого), и я получаю следующий вывод.
root@hostname:~ # bash <(wget -q0 https://raw.githubusercontent.com/ubports/unity8-desktop-install-tools/master/install.sh)
bash: /dev/fd/63: No such file or directory root
TL; DR: скопируйте /root
папка снаружи chroot в chroot каталог
<(...)
оператор известен как замена процесса и является путем к команде выполнения, вывод которой входит в неименованный канал. Это - каков/dev/fd/63. Идея состоит в том, чтобы позволить внешнюю команду (здесь, это bash
) рассматривать другой вывод команд, как будто это был файл. Обычно форма должна была бы использовать <
для перенаправления того псевдофайла возражают в bash
входной поток.
bash < <(wget -q0 https://raw.githubusercontent.com/ubports/unity8-desktop-install-tools/master/install.sh)
Это обычно не отличается от wget https://stuff.com/blah | bash
. В обоих случаях обычно не рекомендуется использовать такие команды, если Вы не на сотню процентов уверены сценарий, Вы загружаете, не из поверхностного источника и не вредоносное программное обеспечение.
Однако, так как Вы упомянули, что выполнили команду в chroot
и выводы сценария No such file or directory root
, и потому что удар позволяет запускать скрипты как bash script.sh
здесь Ваш сценарий выполняется, но нет никакого названного каталога root
в Вашем chroot. Вы могли просто зафиксировать его через sudo cp -R /root chrootdir
. Для лучших результатов я предложил бы просто читать сценарий сначала, видеть то, в чем он нуждается, и скопируйте это в chroot папку и только затем запустите скрипт локально в папке. Никакая потребность выполнить wget многократно
Так работы сценария. Ошибки в оболочке, пишущей сценарий обычно в форме <shell>: <command user typed>: error message
так сценарий, временно сохраненный как/dev/fd/63 и выполнения, это просто не находит то, в чем это нуждается.
См. также,
/dev/fd/63 No such file or directory
Действительно, каталог /dev/fd/
не существует на этом компьютере.
Решение состояло в том, чтобы создать символическую ссылку из /proc/self/fd
в /dev/fd
следующим образом:
ln -s /proc/self/fd /dev/fd
Подстановка процесса <(..)
без этого не будет работать в QNAP.