Je suis nouveau sur mac avec pas familier sur la commande de terminal, je mets le fichier dvtcolorconvert.rb
sur le répertoire racine de mon volume, ce script Ruby peut convertir les thèmes xcode 3 en format de thèmes xcode 4, qui est le format xxxxxxxx.dvtcolortheme
.
Ensuite, exécutez le script /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
sur le terminal, mais il s'agit toujours de l'invite "Autorisation refusée".
quel est le problème avec cela? Tout le monde peut m'aider à résoudre ce problème? Merci.
Veuillez lire toute la réponse avant d'essayer de courir avec Sudo
Essayez de lancer Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
La commande Sudo exécute les commandes qui le suivent avec les privilèges 'superutilisateur' ou 'root'. Cela devrait vous permettre d'exécuter presque n'importe quoi depuis la ligne de commande. Cela dit, NE FAITES PAS CELA! Si vous exécutez un script sur votre ordinateur et que vous n'en avez pas besoin pour accéder aux principaux composants de votre système d'exploitation (Je suppose que vous ne l'êtes pas puisque vous appelez le script sur quelque chose dans votre répertoire personnel (~ /)), il devrait alors être exécuté à partir de votre répertoire personnel, c'est-à-dire:
~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Déplacez-le dans ~/ou un sous-répertoire et exécutez-le à partir de là. Vous ne devriez jamais avoir de problèmes d'autorisation là-bas et il n'y aurait pas de risque qu'il accède à ou modifie quoi que ce soit critique pour votre système d'exploitation.
Si vous rencontrez toujours des problèmes, vous pouvez vérifier les autorisations sur le fichier en exécutant ls -l
dans le même répertoire que le script Ruby. Vous obtiendrez quelque chose comme ceci:
$ 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
Vous remarquerez que le fichier readme.txt indique -rw-r--r--
à gauche. Cela montre les autorisations pour ce fichier. Les 9 caractères de droite peuvent être divisés en groupes de 3 caractères de "rwx" (lire, écrire, exécuter). Si je veux ajouter des droits d'exécution à ce fichier, j'exécuterais chmod 755 readme.txt
et cette partie des autorisations deviendrait rwxr-xr-x
. Je peux maintenant exécuter ce fichier si je le souhaite en exécutant ./readme.txt
(./ indique à la bash de rechercher dans le répertoire en cours la commande voulue plutôt que de rechercher la variable $ PATH).
schluchc fait allusion à la page de manuel de chmod. Pour ce faire, exécutez man chmod
. C'est le meilleur moyen d'obtenir de la documentation sur une commande donnée, man <command>
Vous êtes-vous donné le droit d'exécuter le script?
La commande suivante en tant que super utilisateur le fera pour vous:
Sudo chmod 755 'filename'
Pour plus de détails, vous devriez lire la page de manuel de chmod.
Vous devez exécuter le script en tant que 'superutilisateur', ajoutez simplement 'Sudo' devant la commande et tapez votre mot de passe lorsque vous y êtes invité.
Alors essayez:
Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Si cela ne fonctionne pas, essayez d'adapter les autorisations:
Sudo chmod 755 /dvtcolorconvert.rb
Sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
Dans mon cas, j'avais fait une faute de frappe stupide dans le Shebang.
Donc, si quelqu'un d'autre avec de gros doigts trébuche sur cette question:
Oups: #!/usr/local/bin Ruby
Je voulais écrire: #!/usr/bin/env Ruby
L'erreur vague que ZSH donne m'a envoyé dans le mauvais chemin:
ZSH: zsh: permission denied: ./foo.rb
Bash: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied
Pour exécuter en mode administrateur sous mac
Sudo su
Vérifiez les autorisations sur votre script Ruby (il se peut que vous n'ayez pas l'autorisation d'exécution), votre fichier de thème et votre répertoire (au cas où il ne peut pas lire le thème ou tente d'y créer d'autres thèmes), et le répertoire dans lequel vous vous trouvez lorsque vous exécutez le script (s'il crée des fichiers temporaires dans le répertoire actuel plutôt que /tmp
).
N'importe lequel d'entre eux pourrait vous causer du chagrin.