Toda vez que o Vivaldi é atualizado, tenho que executar este comando sed para aplicar custom.css
sudo sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css
Agora o comando funciona bem no terminal, mas não quando tento executá-lo criando um alias em ~/.bash_aliases ou mesmo através de um script bash (colocado dentro de /bin/ com permissão executável). Eu tentei usar o caminho completo para "custom.css", mas ainda não funcionou. Obrigado.
Editar:
(1) Através do pseudônimo:
alias vivupdate="sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css"
Quando tentei executar, estou recebendo este erro:
$ sudo vivupdate
[sudo] password for admn:
sudo: vivupdate: command not found
$
(2) Através de um script Bash:
#!/bin/bash
sed -i '1s/^/@import "custom.css";/' /opt/vivaldi-snapshot/resources/vivaldi/style/common.css
criou vivupdate.sh, tornou executável e o colocou dentro de /bin/.
Em seguida, editei o arquivo sudoers e adicionei:
user ALL=(ALL:ALL) NOPASSWD:/bin/vivupdate.sh
Mas quando executo o script no terminal, recebo este erro:
sed: couldn't open temporary file /opt/vivaldi-snapshot/resources/vivaldi/style/sedCIt48u: Permission denied
Os aliases não estão disponíveis para
sudo
. Eles são específicos para seu shell e usuário esudo
estão executando comandos como root. Portanto, se você precisar que um alias seja executado como root, será necessário incluir osudo
na própria definição do alias. Além disso, você tem a citação errada no alias, então não funcionaria de qualquer maneira. O que você quer é:Observe como escapei das aspas duplas internas (
\"
). Sem isso, já que você está definindo o alias com aspas duplas, a segunda aspas duplas (a anterior a"custom.css
) significará o fim.O problema com o script é por causa de como
sed -i
se comporta. Embora pareça estar editando o arquivo original, o que realmente acontece é que ele salva o arquivo editado como uma cópia temporária e depois renomeia o arquivo de volta ao original. No entanto, como você não está executando comsudo
, você não tem permissão para fazê-lo. A linha que você adicionou aosudoers
arquivo significa apenas que você pode executarsudo vivupdate.sh
sem uma senha. No entanto, você ainda precisa executá-lo comosudo
.Não é suficiente adicionar o comando a
sudoers
, você ainda precisa chamá-lo comsudo
: