Достигнут graphical.target, но все еще нужно ввести startx для запуска графического интерфейса

Если вашей целью является удаление всех файлов в массиве папок, другой альтернативой может быть передача массива в rmвот так:

#!/bin/bash    

$IMAGES_DIR="/Users/michael/scripts/imagefiles"
$BACKUP_DIR="/Users/michael/scripts/imagebackups"

#...

# to preserve whitespaces in path strings, add double quotes around each variable
array=( "$IMAGES_DIR" "$BACKUP_DIR" )

# this appends "/*" to the end of each dirname if you want to delete the contents of the directories
# without deleting the directories themselves
array=( "${array[@]/%//*}" )

# this will spread the array into multiple calls to rm
rm -rf ${array[@]}

Один пример вкладыша -:

rm -rf ${array[@]/%//*}

Но если вы хотите удалить папки, вы можете просто использовать

rm -rf ${array[@]}

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

РЕДАКТИРОВАТЬ:

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

0
28.11.2020, 17:43
2 ответа
  1. /etc/systemd/system/default.target, указывающее на /usr/lib/systemd/system/graphical.target, должно содержать:

Wants=display-manager.service

Чтобы проверить цель systemd по умолчанию:

systemctl get-default
graphical.target

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 40 Jan 1  2020 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
    Должна существовать символическая ссылка
  1. /etc/systemd/system/display-manager.service, указывающая на фактическую единицу Display Manager, в моем случае это /usr/lib/systemd/system/lxdm.service.

Чтобы проверить:

ls -l /etc/systemd/system/display-manager.service
lrwxrwxrwx. 1 root root 36 Jan 1  2020 /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lxdm.service

# cat /usr/lib/systemd/system/lxdm.service
[Unit]
Description=LXDM (Lightweight X11 Display Manager)
#Documentation=man:lxdm(8)
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service livesys-late.service
#Conflicts=plymouth-quit.service

[Service]
ExecStart=/usr/sbin/lxdm
Restart=always
IgnoreSIGPIPE=no
#BusName=org.freedesktop.lxdm

[Install]
Alias=display-manager.service

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

Скорее всего, вы захотите установить SDDM, так как это предпочтительный DM для KDE. Вот как вы можете установить/повторно включить его .

1
18.03.2021, 22:46

Параметр graphical.targetне переводит вас автоматически в графический сеанс. Что он делает, так это гарантирует, что при загрузке вашей системы все программы/службы, которые, как ожидается, будут запущены в цели graphical.target, будут запущены.

Когда вы включаете службу, вы добавляете эту службу к некоторой цели (multi-user, graphicalи т. д. ). В какой конкретной цели зависит от конфигурации этого блока.

Вам нужно включить какую-то программу, чтобы при входе системы в цель graphicalона позаботилась о запуске графического сеанса.

Обычно эта программа представляет собой Диспетчер отображения. Убедитесь, что в вашей системе установлены некоторые из них. Если вы используете KDE, вы можете предпочесть использовать sddm. В моей системе Arch я бы установил его, запустив:

sudo pacman -S sddm

Затем вам нужно включить этот юнит. Для этого запустите

systemctl enable sddm.service
0
18.03.2021, 22:46

Теги

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