Lea la respuesta completa antes de intentar ejecutar con sudo
Intenta correr sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
El comando sudo ejecuta los comandos que le siguen con privilegios de 'superusuario' o 'root'. Esto debería permitirle ejecutar casi cualquier cosa desde la línea de comandos. Dicho esto, ¡NO HAGA ESTO! Si está ejecutando un script en su computadora y no lo necesita para acceder a los componentes centrales de su sistema operativo (supongo que no es así, ya que está invocando el script en algo dentro de su directorio de inicio (~ /)), entonces debería estar ejecutándose desde su directorio de inicio, es decir:
~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Muévalo a ~ / o un subdirectorio y ejecútelo desde allí. Nunca debería tener problemas de permisos allí y no habrá riesgo de que acceda o modifique algo crítico para su sistema operativo.
Si aún tiene problemas, puede verificar los permisos en el archivo ejecutándolo ls -l
en el mismo directorio que el script ruby. Obtendrá algo como esto:
$ ls -l
total 13
drwxr-xr-x 4 or019268 Administ 12288 Apr 10 18:14 TestWizard
drwxr-xr-x 4 or019268 Administ 4096 Aug 27 12:41 Wizard.Controls
drwxr-xr-x 5 or019268 Administ 8192 Sep 5 00:03 Wizard.UI
-rw-r--r-- 1 or019268 Administ 1375 Sep 5 00:03 readme.txt
Notará que el archivo readme.txt dice -rw-r--r--
a la izquierda. Esto muestra los permisos para ese archivo. Los 9 caracteres de la derecha se pueden dividir en grupos de 3 caracteres de 'rwx' (leer, escribir, ejecutar). Si quiero agregar derechos de ejecución a este archivo, lo ejecutaría chmod 755 readme.txt
y esa parte de permisos se convertiría en rwxr-xr-x
. Ahora puedo ejecutar este archivo si quiero ejecutando ./readme.txt
(./ le dice a bash que busque en el directorio actual el comando deseado en lugar de buscar la variable $ PATH).
schluchc alude a mirar la página de manual de chmod, haga esto ejecutando man chmod
. Esta es la mejor manera de obtener documentación sobre un comando dado,man <command>
echo ~
, típicamente/Users/$USER
. El escritorio es solo un directorio debajo de eso. Las GUI de Unix ocultan el directorio de inicio de la vista, pero todavía está allí.echo $HOME
. Es probable que se vea como / Users / <username> o posiblemente / Users / <iTunes username>¿Te diste los derechos para ejecutar el guión?
El siguiente comando como superusuario hará esto por usted:
sudo chmod 755 'filename'
Para obtener más detalles, debe leer la página de manual de chmod.
fuente
En mi caso, había cometido un error tipográfico estúpido en el shebang.
Entonces, en caso de que alguien más con dedos gordos se encuentre con esta pregunta:
¡Ups!
#!/usr/local/bin ruby
Quise escribir:
#!/usr/bin/env ruby
El vago error que da ZSH me envió por el camino equivocado:
ZSH:
zsh: permission denied: ./foo.rb
Intento:
bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
fuente
Debe ejecutar el script como 'superusuario', simplemente agregue 'sudo' delante del comando y escriba su contraseña cuando se le solicite.
Así que intenta:
Si esto no funciona, intente adaptar los permisos:
fuente
Para ejecutar en modo administrador en mac
fuente
Verifique los permisos en su script Ruby (puede que no tenga permiso de ejecución), su archivo y directorio de tema (en caso de que no pueda leer el tema o intente crear otros temas allí), y el directorio en el que se encuentra cuando ejecuta el script (en caso de que haga archivos temporales en el directorio actual en lugar de entonces
/tmp
).Cualquiera de ellos podría causarle dolor.
fuente