Пожалуйста, прочтите весь ответ, прежде чем пытаться запустить sudo
Попробуйте бежать sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
Команда sudo выполняет следующие за ней команды с привилегиями суперпользователя или root. Это должно позволить вам выполнять почти все из командной строки. Тем не менее, НЕ ДЕЛАЙТЕ ЭТОГО! Если вы запускаете сценарий на своем компьютере и не нуждаетесь в нем для доступа к основным компонентам вашей операционной системы (я предполагаю, что это не так, поскольку вы вызываете сценарий для чего-то внутри своего домашнего каталога (~ /)), тогда он должен запускаться из вашего домашнего каталога, то есть:
~/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>
echo ~
, как правило, с помощью/Users/$USER
. Рабочий стол - это просто каталог под ним. Графические интерфейсы пользователя Unix скрывают домашний каталог от просмотра, но он все еще там.echo $HOME
. Скорее всего, это будет выглядеть примерно так: / Users / <username> или, возможно, / Users / <iTunes username>Вы дали себе права на выполнение скрипта?
Следующая команда как суперпользователь сделает это за вас:
sudo chmod 755 'filename'
Для получения подробной информации вы должны прочитать справочную страницу chmod.
источник
В моем случае я допустил глупую опечатку в shebang.
Итак, если кто-то еще с толстыми пальцами наткнется на этот вопрос:
Упс:
#!/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
источник
Вы должны запустить сценарий как «суперпользователь», просто добавьте «sudo» перед командой и введите свой пароль при появлении запроса.
Поэтому постарайтесь:
Если это не сработает, попробуйте изменить разрешения:
источник
Для запуска в режиме администратора на mac
источник
Проверьте разрешения на свой скрипт Ruby (возможно, не имеет разрешения на выполнение), файл и каталог вашей темы (на случай, если он не может прочитать тему или пытается создать там другие темы), а также каталог, в котором вы находитесь при запуске скрипт (если он создает временные файлы в текущем каталоге, а не в нем
/tmp
).Любой из них может причинить вам горе.
источник