$ ls -l
total 10
drwxrwx--x 22 www-data www-data 79 Mar 1 17:53 v1
drwxrwx--x 22 www-data www-data 79 Mar 1 17:53 v2
lrwxrwxrwx 1 root root 1 Mar 1 17:59 symlink -> v2
Eu estou dentro
/home/user/symlink
, se eu correrpwd -L
, eu pego/home/user/symlink
Se eu corro
sudo pwd -L
, eu ganho/home/user/v2
Como posso continuar
/home/user/symlink
executando com sudo?Tenho um script que adiciona entradas cron aos meus outros scripts na v1
E sudo é necessário para adicionar algumas entradas cron
As entradas do cron não podem apontar para v1 ou v2, porque então quando v3 aparecer, elas quebrarão
Atualização: houve um erro de digitação na minha pergunta anterior, agora foi corrigido.
Observe que quando você usa,
sudo pwd -L
você está obtendo o executável autônomo,/usr/bin/pwd
enquanto quando você digitapwd -L
no seu shell interativo, você quase certamente está obtendo o shell integradopwd
.No entanto, eles basicamente fazem a mesma coisa: imprimem o valor da
PWD
variável de ambiente na íntegra (ou seja, sem resolver links simbólicos).Então, o que realmente está acontecendo aqui é que ele
sudo
está configurado para redefinir o ambiente - e isso inclui desconfigurar o valor dePWD
:Se você realmente precisar fazer isso, você pode preservar o valor da variável PWD em
sudo
:Se você precisar fazer isso sem interação do usuário, considere substituir os
env_keep
padrões dopwd
comando da seguinte maneira:crie um arquivo de substituição, por exemplo
adicione o seguinte conteúdo
salvar e sair
Veja por exemplo
/etc/sudoers
-- especificarenv_keep
apenas para um comando?