$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/access*
ls: cannot access /sites/servers/server_instance/logs/access*: No such file or directory
$ sudo -iu abc ls -ltr /sites/servers/server_instance/logs/
total 594812
-rwxrwxrwx 1 abc abc 45 Mar 21 12:42 old.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 12:45 console.log
-rwxrwxrwx 1 abc abc 304537970 Mar 24 13:20 access_nginx.log
Alguém pode explicar por que isso acontece? Estou preso em um script devido a isso.
command-line
bash
sudo
wildcards
Faisal
fonte
fonte
ls
comando que pode então (quando a mudança de identidade a partirsu
tomou efeito) faça o globbing.ls
não faz nenhuma globbing.sh -c
à linha de comando.Você pode ter o globbing desativado.
Procure algo como
set -f
ouset -o noglob
antes dessas linhas no script ou se estiver executando um shell interativoecho $-
; se houver umf
na saída, o globbing está desativado:Para corrigir isso, remova
set -f
ouset -o noglob
do script ou, em um shell interativo, executeset +f
ouset +o noglob
:fonte
sudo -u abc /path/to/script
)? Nesse caso, o globbing não deve falhar. De qualquer forma, muru sugeriu a questão do caminho em sua resposta, não eu. Você deve aceitar a resposta dele ( askubuntu.com/help/accepted-answer ).