$ 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
Czy ktoś może wyjaśnić, dlaczego tak się dzieje? Z tego powodu utknąłem na skrypcie.
źródło
ls
polecenia, które może wtedy (gdy zmiana tożsamościsu
została podjęta efekt) wykonaj globbing.ls
nie robi globalizacji.sh -c
do wiersza poleceń.Możliwe, że masz wyłączone globbing.
Poszukaj czegoś takiego
set -f
lubset -o noglob
przed tymi wierszami w skrypcie lub w interaktywnym uruchomieniu powłokiecho $-
; jeśli jestf
wyjście, globbing jest wyłączony:Aby to naprawić, usuń
set -f
lubset -o noglob
ze skryptu lub w interaktywnym uruchomieniu powłokiset +f
lubset +o noglob
:źródło
sudo -u abc /path/to/script
)? W takim przypadku globowanie nie powinno zawieść. W każdym razie muru zasugerował problem ze ścieżką w swojej odpowiedzi, nie ja. Powinieneś rozważyć zaakceptowanie jego odpowiedzi ( askubuntu.com/help/accepted-answer ).