Выбор редактора при выполнении под sudo

  1. если Вы хотите 4 случая (0,1,2,3), Вам нужно RANGE=4

  2. упростите:

    flipS() {
        local options=("" "-fliph" "-flipd" "-flipv")
        local index=$(( RANDOM % ${#options[@]} ))
        setS=${options[$index]}
    }
    
  3. если Вы хотите использовать setS таким способом, которым команда не видит его, если это - пустая строка, Вы не должны заключать переменную в кавычки:

    hsetroot $setS -anotheroption ...
    
2
12.09.2014, 17:04
1 ответ

В большинстве конфигураций sudo удаляет большинство переменных среды. Вы можете увидеть конфигурацию sudo, запустив sudo -V от имени пользователя root (так sudo sudo -V как пользователь с разрешениями sudo).

В Ubuntu переменные удаляются, кроме небольшого списка, а РЕДАКТОР и VISUAL не включены в список для сохранения. Поэтому, когда вы запускаете sudo somecommand , ваши настройки редактора для каждого пользователя не применяются при выполнении somecommand .

Когда вы запускаете sudo -E , файл копируется во временное расположение, затем sudo запускает ваш редактор без дополнительных привилегий, и, наконец, временный файл перемещается в окончательное расположение, если редактор возвращается статус успеха. Поскольку редактор выполняется без дополнительных привилегий, sudo не удаляет окружение.

По возможности следует использовать sudo -E , поскольку это позволяет запускать ваш любимый редактор, не беспокоясь о запуске программ с повышенными привилегиями. Когда это невозможно (например, для запуска crontab -e , вы можете выбрать свой редактор, снова определив свои предпочтения внутри команды, выполняемой sudo:

sudo env VISUAL=vim crontab -e
2
27.01.2020, 22:13

Теги

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