En OS X 10.6.8, hice un pequeño archivo de script en mi directorio de inicio e intenté hacerlo ejecutable. Sorprendentemente, encontré que chmod
no tuvo efecto hasta que lo ejecuté como superusuario. Soy propietario y tengo acceso de escritura al directorio de mi directorio principal y al script, así que, ¿qué impide que chmod funcione?
my_mac:~ crowding$ ls -dle ~
drwxr-xr-x+ 214 crowding staff 7276 Jul 28 16:30 /Users/crowding
0: group:everyone deny delete
my_mac:~ crowding$ ls -le ~/my_script
-rw-r--r-- 1 crowding staff 22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$ chmod a+x ~/my_script
my_mac:~ crowding$ ls -le ~/my_script
-rw-r--r-- 1 crowding staff 22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$ sudo chmod a+x ~/my_script
Password:
my_mac:~ crowding$ ls -le ~/my_script
-rwxr-xr-x 1 crowding staff 22 Jul 28 16:25 /Users/crowding/my_script
my_mac:~ crowding$
permission
unix
path
sudo
crowding
fuente
fuente
Respuestas:
Resulta que había otro ejecutivo "chmod" en el camino, ocultando mi propio chmod.
Lo que hizo que esto fuera difícil de ver era que había usado el metacarácter "~" en mi variable PATH. Solo algunas cosas interpretarán una tilde en el PATH. los
which
El programa no expande la tilde, por lo quewhich chmod
me dijiste eso/bin/chmod
fue el chmod en el camino, pero bash hace expandir la tilde, por lo que trató de ejecutar el otro chmod (que no hizo nada.) Mientras tanto,sudo
hace no expandió la tilde para que funcionara, y dio la impresión de un problema de permisos.Resolución: al agregar subdirectorios de su directorio de inicio a su
PATH,
utilizar$HOME
en lugar de~
.fuente
/Users/crowding
) automáticamente por el shell cuando se asigna a una variable.~
en $ PATH. Por eso siempre recomiendo evitar el uso de comillas al asignar algo a $ PATH.