Эта проблема связана с файлами systemd.
Как указано в man file-hierarchy, каталог /lib предназначен для файлов, поставляемых только для чтения, а /etc предназначен для «конфигурации, специфичной для системы», что может переопределить поставляемый по умолчанию поставщик файлы в /lib.
Правильное место для размещения ваших изменений находится в /etc/sytemd/system.
Вы можете полностью заменить файл, о котором идет речь, файлом в /etc/ или вы используете шаблон «drop-in» для переопределения только части файла.
Поиск man systemd.unit для «Drop-in» для деталей.
Файлы в /lib будут по-прежнему перезаписываться во время обновления пакета, а изменения в /etc/ будут сохранены.
Совет о / lib vs / etc применяется в целом, а не только до systemd.
В /etc/systemd/system/docker.service.d/10-fix-execstart.conf:
[Service]
ExecStart=/usr/bin/dockerd -g "/mnt/var/lib/docker" -H fd://
Итак, вы следуете шаблону для создания файла в каталоге с именем после службы, которую вы хотите переопределить, объявив только конкретный раздел и директиву, которые вы хотите переопределить.
Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.
То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).
В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.
Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.
То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).
В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.
Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.
То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).
В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.
Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть HOME место в другом месте от /home/user. Например, мое домашнее местоположение для моего личного пространства - /home/user/l/j/ljames.
Вместо того, чтобы указать путь к "file:///home/$USER/.wallpaper/1920x1080", вы должны корректно изменить его на "file:///$HOME/.wallpaper/1920x1080".
Ваш скрипт не будет работать для всех.
#!/bin/bash
cd ~/
rm -r ~/.wallpaper
mkdir .wallpaper
cd ~/.wallpaper
wget https://source.unsplash.com/random/1920x1080
# USER=$(whoami) This line isn't neccesary.)
path="file:///$HOME/.wallpaper/1920x1080"
echo $path
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
#!/bin/bash
[ ! -d ~/.wallpaper ] && mkdir ~/.wallpaper
cd ~/.wallpaper
wget -O 1920x1080 https://source.unsplash.com/random/
path="file:///$HOME/.wallpaper/1920x1080"
rm ~/.cache/wallpaper/*
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
Line #1: Create wallpaper directory if it doesn't exist.
Line #2: Move to the folder.
Line #3: Overwrite the current file with the new wallpaper.
Line #4: Set the pathname variable.
Line #5: Removed the Wallpaper cache for image change detection.
Line #6: Active the new wallpaper.
Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть HOME место в другом месте от /home/user. Например, мое домашнее местоположение для моего личного пространства - /home/user/l/j/ljames.
Вместо того, чтобы указать путь к "file:///home/$USER/.wallpaper/1920x1080", вы должны корректно изменить его на "file:///$HOME/.wallpaper/1920x1080".
Ваш скрипт не будет работать для всех.
#!/bin/bash
cd ~/
rm -r ~/.wallpaper
mkdir .wallpaper
cd ~/.wallpaper
wget https://source.unsplash.com/random/1920x1080
# USER=$(whoami) This line isn't neccesary.)
path="file:///$HOME/.wallpaper/1920x1080"
echo $path
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
#!/bin/bash
[ ! -d ~/.wallpaper ] && mkdir ~/.wallpaper
cd ~/.wallpaper
wget -O 1920x1080 https://source.unsplash.com/random/
path="file:///$HOME/.wallpaper/1920x1080"
rm ~/.cache/wallpaper/*
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
Line #1: Create wallpaper directory if it doesn't exist.
Line #2: Move to the folder.
Line #3: Overwrite the current file with the new wallpaper.
Line #4: Set the pathname variable.
Line #5: Removed the Wallpaper cache for image change detection.
Line #6: Active the new wallpaper.
Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть HOME место в другом месте от /home/user. Например, мое домашнее местоположение для моего личного пространства - /home/user/l/j/ljames.
Вместо того, чтобы указать путь к "file:///home/$USER/.wallpaper/1920x1080", вы должны корректно изменить его на "file:///$HOME/.wallpaper/1920x1080".
Ваш скрипт не будет работать для всех.
#!/bin/bash
cd ~/
rm -r ~/.wallpaper
mkdir .wallpaper
cd ~/.wallpaper
wget https://source.unsplash.com/random/1920x1080
# USER=$(whoami) This line isn't neccesary.)
path="file:///$HOME/.wallpaper/1920x1080"
echo $path
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
#!/bin/bash
[ ! -d ~/.wallpaper ] && mkdir ~/.wallpaper
cd ~/.wallpaper
wget -O 1920x1080 https://source.unsplash.com/random/
path="file:///$HOME/.wallpaper/1920x1080"
rm ~/.cache/wallpaper/*
gsettings set org.gnome.desktop.background picture-uri "$path"
Более эффективным примером является:
Line #1: Create wallpaper directory if it doesn't exist.
Line #2: Move to the folder.
Line #3: Overwrite the current file with the new wallpaper.
Line #4: Set the pathname variable.
Line #5: Removed the Wallpaper cache for image change detection.
Line #6: Active the new wallpaper.