$ 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
Quelqu'un peut-il expliquer pourquoi cela se produit? Je suis coincé sur un script à cause de cela.
la source
ls
commande qui peut alors (lorsque le changement d'identité desu
a pris effet) faire le globbing.ls
ne fait aucun globbing.sh -c
à la ligne de commande.Vous pouvez avoir désactivé la globalisation.
Recherchez quelque chose comme
set -f
ouset -o noglob
avant ces lignes dans le script, ou si dans une exécution interactive du shellecho $-
; s'il y a unf
dans la sortie, la globalisation est désactivée:Pour résoudre ce problème, supprimez
set -f
ouset -o noglob
du script, ou si dans une exécution de shell interactiveset +f
ouset +o noglob
:la source
sudo -u abc /path/to/script
)? Dans ce cas, la globalisation ne devrait pas échouer. En tout cas, Muru a suggéré le problème du chemin dans sa réponse, pas moi. Vous devriez envisager d'accepter sa réponse ( askubuntu.com/help/accepted-answer ).