Arch Linux загружается в аварийном режиме после установки другого твердотельного накопителя NVMe

inner.sh может быть:

printf '%s\n' "$1" >&3

и в outer.shвы можете сделать:

{ inner=$(middle "$@" 3>&1 >&4 4>&-); } 4>&1
printf '%s\n' "$inner"

Внутренний текст передается по каналу (в подстановке команд )и сохраняется в переменной оболочки. Это предполагает, что middleне закрывает этот fd 3 перед вызовомinner.sh(, но нет причин для этого ).

Пояснение:

  • {... } 4>&1. В этой группе команд изначально оба fd 1 и 4 указывают на исходный стандартный вывод. IOW, мы сделали копию stdout external.sh на fd 4, чтобы иметь возможность восстановить его внутри подстановки команды
  • $(...). Внутри этой подстановки команд stdout (fd 1 )представляет собой канал. В этом смысл замены команды. Он хочет получить вывод команды. Но здесь нам не нужен стандартный вывод middle, нам нужно то, что он (или, точнее, его дочерний элементinner.sh)записывает в fd 3, поэтому:
  • middle 3>&1 >&4 4>&-:для middleмы делаем fd 3 каналом cmdsubst, чтобы то, что inner.shпишет там, попадало в $inner, и мы восстанавливаем стандартный вывод middleна сохраненный исходный стандартный вывод. на fd 4. Мы закрываем fd 4 после того, как он выполнил свою задачу, так как middleне нужно ничего с ним делать.
-2
28.02.2019, 00:16
1 ответ

Я нашел решение своей проблемы:

Диск и раздел, на котором была установлена ​​моя Arch Linux, были переименованы с nvme0 **на nvme1 **после установки дополнительного диска nvme на мой компьютер. Я исправил свою проблему, просто напрямую отредактировав файл fstab, расположенный в /etc, с помощью nano и вручную изменив 0 --> 1, чтобы последовательность загрузки действительно искала правильное расположение для моих разделов root, /home и SWAP.

Надеюсь, это поможет кому-нибудь, кто когда-нибудь столкнется с этой странной проблемой!

0
28.04.2021, 23:36

Теги

Похожие вопросы