Каждый раз, когда Вивальди обновляется, мне нужно запустить эту команду sed, чтобы применить custom.css
sudo sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css
. Теперь команда отлично работает в терминале, но не тогда, когда я пытаюсь запустить ее, создав псевдоним. в ~ / .bash_aliases или даже через скрипт bash (помещается в / bin / с разрешением на выполнение). Я попытался использовать полный путь для "custom.css", но он все еще не работал. Благодаря.
Редактировать:
(1) Через псевдоним:
alias vivupdate="sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css"
Когда я пытался бежать, я получаю эту ошибку:
$ sudo vivupdate
[sudo] password for admn:
sudo: vivupdate: command not found
$
(2 ) С помощью сценария Bash:
#!/bin/bash
sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css
создал vivupdate.sh, сделал его исполняемым и поместил его в /bin/.
Затем отредактировал файл sudoers и добавил:
user ALL=(ALL:ALL) NOPASSWD:/bin/vivupdate.sh
Но когда я запускаю скрипт в терминале, я получаю эту ошибку:
sed: couldn't open temporary file /opt/vivaldi-snapshot/resources/vivaldi/style/sedCIt48u: Permission denied
Псевдонимы не доступны sudo
. Они характерны для Вашей оболочки и пользователя, и sudo
выполняет команды как корень. Поэтому при необходимости в псевдониме, который будет выполнен как корень, необходимо включать sudo
в самом определении псевдонима. Кроме того, у Вас есть заключение в кавычки, неправильное в псевдониме там, таким образом, это не работало бы так или иначе. То, что Вы хотите:
alias vivupdate="sudo sed -i '1s/^/@import \"custom.css\";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css"
Отметьте, как я вышел из внутренних двойных кавычек (\"
). Без этого, так как Вы определяете псевдоним с двойными кавычками, вторая двойная кавычка (тот прежде "custom.css
) покажет конец.
Проблема со сценарием из-за как sed -i
ведет себя. Хотя это, кажется, редактирует исходный файл, что на самом деле происходит, то, что это сохранило отредактированный файл как временную копию и затем переименовывает файл назад к оригиналу. Однако, так как Вы не выполняете его с sudo
, у Вас нет разрешения сделать так. Строка Вы добавили к sudoers
файл только означает, что можно работать sudo vivupdate.sh
без пароля. Однако все еще необходимо выполнить его как sudo
.
Не достаточно добавить команду к sudoers
, все еще необходимо назвать его с sudo
:
sudo /bin/vivupdate.sh