2012-09-05 35 views
35

Soy nuevo en mac con el comando no familiar, puse el archivo dvtcolorconvert.rb en el directorio raíz de mi volumen, este script de ruby ​​puede convertir temas de xcode 3 en formato de temas xcode 4 , que es el formato xxxxxxxx.dvtcolortheme.Ejecutar script en mac "Permiso denegado"

A continuación, ejecute el script /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme en el terminal, pero siempre es rápido "Permiso denegado".

¿Qué pasa con esto? ¿Alguien puede ayudarme a resolver este problema? Gracias.

Respuesta

36

Lea la respuesta completa antes de intentar ejecutar con sudo

intente ejecutar sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

El comando sudo ejecuta las órdenes que le siguen con 'superusuario' o privilegios de 'root'. Esto debería permitirle ejecutar casi cualquier cosa desde la línea de comando. 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 lo está, ya que está invocando el script en algo dentro de su directorio personal (~ /)) , entonces debería estar en funcionamiento desde su directorio principal, es decir:

~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

moverlo a ~/o un subdirectorio y ejecutar desde allí. Nunca debe tener problemas de permisos allí y no habrá un riesgo de que acceda o modifique nada crítico para su sistema operativo.

Si aún tiene problemas, puede verificar los permisos en el archivo ejecutando ls -l mientras está en el mismo directorio que el script de 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 Léame.El archivo 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 deseo agregar derechos de ejecución a este archivo, ejecutaría chmod 755 readme.txt y esa porción de permisos se convertiría en rwxr-xr-x. Ahora puedo ejecutar este archivo si quiero ejecutar ./readme.txt (./ le dice al bash que busque en el directorio actual el comando deseado en lugar de buscar la variable $ PATH).

schluchc alude a mirar la página del manual para chmod, haga esto ejecutando man chmod. Esta es la mejor manera de obtener documentación sobre un comando dado, man <command>

+0

¡Gracias! Pero, ¿dónde está el directorio de inicio (~ /)? ¿Significa escritorio? –

+0

El shell puede decirle que con 'echo ~', típicamente '/ Users/$ USER'. El escritorio es solo un directorio debajo de eso. Las GUI de Unix ocultan el directorio de inicio, pero aún está allí. –

+1

Puede obtener la ruta a su directorio de inicio ejecutando 'echo $ HOME'. Es probable que se parezca a/Users/ o posiblemente/Users/

1

Compruebe los permisos en su script Ruby (puede no tener permiso de ejecución), su archivo de tema y directorio (en caso de que no pueda leer el tema o intente crear otros temas), y el directorio que vuelva a entrar cuando ejecute el script (en caso de que haga archivos temporales en el directorio actual en lugar de /tmp).

Cualquiera de ellos podría estar causando dolor.

0

Debe ejecutar el script como 'superusuario', simplemente agregue 'sudo' al frente del comando y escriba su contraseña cuando se le solicite.

Así que trate de:

sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme 

Si esto no funciona, intente adaptar los permisos:

sudo chmod 755 /dvtcolorconvert.rb 
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme 
+2

Oooh, no _necesariamente_ algo que sugeriría a menos que estés _darn_ seguro de que el guión no puede dañar nada. – paxdiablo

106

¿Sabía usted se da el derecho a ejecutar la secuencia de comandos?

El siguiente comando como superusuario lo hará por usted:

sudo chmod 755 'filename'

Para más detalles usted debe leer la página del manual de chmod.

+2

Esta debería ser la respuesta aceptada. Claro, conciso y simplemente funciona. – dialex

+0

Utilicé: sudo chmod 777 'nombre de archivo' –

2

En mi caso, cometí un error estúpido en el shebang.

lo tanto, en caso de que alguien con los dedos de grasa se topa con esta pregunta:

chillidos: #!/usr/local/bin ruby

que significa que escribir: #!/usr/bin/env ruby

El error vaga ZSH da me envió por el camino equivocado :

ZSH: zsh: permission denied: ./foo.rb

Bash: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied