gsettings: команда не найдена

Эта проблема связана с файлами systemd.

Как указано в man file-hierarchy, каталог /lib предназначен для файлов, поставляемых только для чтения, а /etc предназначен для «конфигурации, специфичной для системы», что может переопределить поставляемый по умолчанию поставщик файлы в /lib.

Правильное место для размещения ваших изменений находится в /etc/sytemd/system.

Вы можете полностью заменить файл, о котором идет речь, файлом в /etc/ или вы используете шаблон «drop-in» для переопределения только части файла.

Поиск man systemd.unit для «Drop-in» для деталей.

Файлы в /lib будут по-прежнему перезаписываться во время обновления пакета, а изменения в /etc/ будут сохранены.

Совет о / lib vs / etc применяется в целом, а не только до systemd.

example.dd]

В /etc/systemd/system/docker.service.d/10-fix-execstart.conf:

[Service]
ExecStart=/usr/bin/dockerd -g "/mnt/var/lib/docker" -H fd://

Итак, вы следуете шаблону для создания файла в каталоге с именем после службы, которую вы хотите переопределить, объявив только конкретный раздел и директиву, которые вы хотите переопределить.

3
задан 8 April 2018 в 11:11

6 ответов

Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.

То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).

В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.

4
ответ дан 22 May 2018 в 11:33
  • 1
    Это решило мою проблему. Я уже знал переменную среды PATH. Но, не зная об изменении его в скрипте, мои команды будут терпеть неудачу. благодаря – Saran Sankaran 8 April 2018 в 12:26

Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.

То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).

В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.

4
ответ дан 17 July 2018 в 17:15

Поскольку вы изменяете PATH в своем скрипте. Эта зарезервированная переменная используется для поиска исполняемых файлов. Используйте другую переменную.

То же самое с USER: он также зарезервирован и уже содержит текущего пользователя, то есть вам не нужно устанавливать USER=$(whoami).

В общем случае при создании переменных в shell-скрипты, рекомендуется использовать имена в нижнем регистре. Обычно предопределенные переменные (например, HOME, USER, PATH) - это все UPPERCASE, и простой способ избежать их перезаписи - использовать имена нижнего регистра в собственных скриптах. Или используйте некоторый префикс, например. MY_PATH, MY_USER и т. д.

4
ответ дан 23 July 2018 в 18:06

Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть 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.
4
ответ дан 22 May 2018 в 11:33
  • 1
    Я не знал, есть переменная HOME, и у нас может быть домашний каталог после многих каталогов из / home /. В первой строке, где мы создаем каталог, есть только один [ и два ], почему этот синтаксис подобен этому? – Saran Sankaran 8 April 2018 в 13:29
  • 2
    @PerlDuck Это правильно ... Я исправил это. – L. D. James 8 April 2018 в 13:36
  • 3
    @SaranSankaran Обычный домашний каталог пользователя обычно (и по соглашению) находится прямо под /home, но он может быть где угодно. Особенно технические пользователи часто имеют свой домашний каталог в другом месте. Например, пользователь www-data (созданный и используемый apache) имеет /var/www в качестве своего домашнего каталога. – PerlDuck 8 April 2018 в 14:01

Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть 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.
4
ответ дан 17 July 2018 в 17:15

Ваш скрипт не будет работать для всех. Переменная, которую вы установили для дома для своего пользователя, будет неправильной для людей, у которых есть 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.
4
ответ дан 23 July 2018 в 18:06
  • 1
    Я не знал, есть переменная HOME, и у нас может быть домашний каталог после многих каталогов из / home /. В первой строке, где мы создаем каталог, есть только один [ и два ], почему этот синтаксис подобен этому? – Saran Sankaran 8 April 2018 в 13:29
  • 2
    @PerlDuck Это правильно ... Я исправил это. – L. D. James 8 April 2018 в 13:36
  • 3
    @SaranSankaran Обычный домашний каталог пользователя обычно (и по соглашению) находится прямо под /home, но он может быть где угодно. Особенно технические пользователи часто имеют свой домашний каталог в другом месте. Например, пользователь www-data (созданный и используемый apache) имеет /var/www в качестве своего домашнего каталога. – PerlDuck 8 April 2018 в 14:01

Другие вопросы по тегам:

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