Почему мои компьютеры долго выключаются?

Насколько я понимаю, они эквивалентны; в обоих случаях exitзавершит экземпляр оболочки, выполняющей скрипт.

Ни одна из версий того, что у вас есть, не создает подоболочку. Чтобы доказать это, рассмотрим следующие эксперименты:

$ cat version1
#!/bin/bash

set -e

x=7

ls /tmp/does/not/exist &> /dev/null || {
    x=42
}

echo $x


$./version1
42
$ cat version2
#!/bin/bash

set -e

x=7

if [ ! ls /tmp/does/not/exist &> /dev/null ]; then
    x=42
fi

echo $x

$./version2
42

Если вы измените { }в version1на ()(, как в следующей версии ), это создаст подоболочку. В результате модификация xвнутри ( )не влияет на xв вызывающей оболочке :

.
$ cat version3
#!/bin/bash

set -e

x=7

ls /tmp/does/not/exist 2> /dev/null || (
    x=42
)

echo $x

$./version3
7
5
24.12.2020, 18:38
1 ответ

Медленное завершение работы после обновления может быть вызвано потерянными пакетами, которые больше не используются или не требуются для чего-либо после обновления программного обеспечения. Если это так, поиск потерянных пакетов и их удаление решит проблему.

Список потерянных пакетов:

pacman -Qtdq

Если приведенная выше команда находит потерянные пакеты, вы можете удалить их с помощью pacman. Удаление потерянных пакетов по одному предпочтительнее, чем удаление их всех с помощью одной команды, потому что некоторые пакеты, отмеченные как потерянные, могут по-прежнему требоваться другим пакетом, если этот пакет был загружен и установлен вручную, а не установлен с помощью pacman с вашего компьютера. включенные репозитории программного обеспечения.

5
18.03.2021, 22:41

Теги

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