Запустіть сценарій у підказці mac “Дозвіл відмовлено”


83

Я новачок у mac з не знайомою командою терміналу, я помістив dvtcolorconvert.rbфайл у кореневий каталог мого тому, цей рубіновий скрипт може перетворити теми xcode 3 у формат тем xcode 4, який є xxxxxxxx.dvtcolorthemeформатом.

Потім запустіть скрипт /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolorthemeна терміналі, але завжди з'являється запит " Дозвіл відмовлено ".

що в цьому поганого? Хто-небудь може допомогти мені вирішити цю проблему? Дякую.

Відповіді:


72

Будь ласка, прочитайте всю відповідь, перш ніж намагатись запустити sudo

Спробуйте бігти sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

Команда sudo виконує команди, які слідують за нею, із правами суперкористувача або кореня. Це повинно дозволити вам виконувати майже будь-що з командного рядка. Тим не менше, НЕ РОБІТЬ ЦЕ! Якщо ви запускаєте сценарій на своєму комп’ютері і вам не потрібен для доступу до основних компонентів вашої операційної системи (я думаю, ви цього не робите, оскільки ви викликаєте скрипт на щось у вашому домашньому каталозі (~ /)) тоді він повинен працювати з вашого домашнього каталогу, тобто:

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

Перемістіть його в ~ / або підкаталог і виконайте звідти. У вас ніколи не повинно виникати проблем із дозволами, і він не матиме ризику отримати доступ або змінити щось критичне для вашої ОС.

Якщо у вас все ще виникають проблеми, ви можете перевірити дозволи на файл, запустивши його ls -lв тому ж каталозі, що і скрипт ruby. Ви отримаєте щось подібне:

$ 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

Ви помітите, що файл readme.txt пише -rw-r--r--зліва. Це показує дозволи для цього файлу. 9 символів праворуч можна розділити на групи з 3 символів 'rwx' (читання, запис, виконання). Якщо я хочу додати до цього файлу права на виконання, я б виконав, chmod 755 readme.txtі ця частина дозволів стане rwxr-xr-x. Тепер я можу виконати цей файл, якщо хочу, запустивши ./readme.txt(./ говорить bash шукати в поточному каталозі передбачувану команду, а не шукати змінну $ PATH).

schluchc натякає на пошук сторінки користувача для chmod, зробіть це, запустивши man chmod. Це найкращий спосіб отримати документацію щодо даної команди,man <command>


Дякую! Але де знаходиться домашній каталог (~ /)? Це означає робочий стіл?
Andy_24

Оболонка може вам це сказати echo ~, як правило /Users/$USER. Робочий стіл - це просто каталог нижче цього. Графічні інтерфейси Unix приховують домашній каталог від очей, але він все ще там.
Henk Langeveld,

1
Ви можете отримати шлях до домашнього каталогу, запустивши echo $HOME. Це, швидше за все, буде виглядати приблизно так: / Користувачі / <ім'я користувача> або, можливо, / Користувачі / <ім'я користувача iTunes>
sean_m

@sean_m Дякую за ваше детальне пояснення, я це вже знаю.
Andy_24,

Дякую за дивовижну відповідь
Фаріс Райхан

247

Ви дали собі право на виконання сценарію?

Наступна команда як суперкористувач зробить це за вас:

sudo chmod 755 'filename'

Для отримання детальної інформації ви повинні прочитати сторінку керівництва chmod.


4
Це має бути прийнятою відповіддю. Чітко, коротко, і це просто працює.
dialex

3
Я використовував: sudo chmod 777 'ім'я файлу'
Hemant Kaushik

@HemantKaushik впевнений, вони обидва працюють, але ти знаєш різницю?
hally9k

3
@ hally9k 777 дозволяє кожному змінювати ваш файл. За допомогою 755 лише ви та користувач root зможете змінити файл, щоб захистити його.
Steve Breese

4

У моєму випадку я зробив дурну помилку в шебангу.

Тож на випадок, якщо хтось інший на товстих пальцях натрапить на це питання:

Упс: #!/usr/local/bin ruby

Я хотів написати: #!/usr/bin/env ruby

Невиразна помилка, яку видає ZSH, послала мене неправильним шляхом:

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

Баш: bash: ./foo.rb: /usr/local/bin: bad interpreter: Permission denied


3

Вам слід запустити сценарій як `` суперкористувач '', просто додайте `` sudo '' перед командою і введіть свій пароль, коли буде запропоновано.

Тож спробуйте:

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

Якщо це не допомогло, спробуйте адаптувати дозволи:

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

2
Оооо, що не обов'язково що - то я хотів би запропонувати , якщо Ви не штопати впевнений , що сценарій не може пошкодити що - небудь.
paxdiablo


1

Перевірте дозволи на ваш сценарій Ruby (можливо, не має дозволу на виконання), файл теми та каталог (на випадок, якщо він не може прочитати тему або намагається створити інші теми там), і каталог, в якому ви знаходитесь під час запуску сценарій (у випадку, якщо він створює тимчасові файли у поточному каталозі, а не тоді /tmp).

Будь-хто з них може заподіювати вам горе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.