98

我是 mac 新手,对终端命令不熟悉,我把dvtcolorconvert.rb文件放在我的卷的根目录下,这个 ruby​​ 脚本可以将 xcode 3 主题转换为 xcode 4 主题格式,即xxxxxxxx.dvtcolortheme格式。

然后在终端上运行脚本/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme,但总是提示“权限被拒绝”。

这有什么问题?有人可以帮我解决这个问题吗?谢谢。

4

7 回答 7

284

您是否赋予自己执行脚本的权利?

作为超级用户的以下命令将为您执行此操作:

sudo chmod 755 'filename'

有关详细信息,您应该阅读 chmod 的手册页。

于 2012-09-05T07:31:09.423 回答
77

请在尝试运行之前阅读整个答案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>

于 2012-09-05T07:34:53.710 回答
5

就我而言,我在shebang中犯了一个愚蠢的错字。

因此,以防其他人用胖手指偶然发现这个问题:

哎呀:#!/usr/local/bin ruby

我的意思是写:#!/usr/bin/env ruby

ZSH 给我的模糊错误让我走错了路:

郑州:zsh: permission denied: ./foo.rb

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

于 2015-02-02T20:37:12.317 回答
4

在mac中以管理员模式运行

sudo su
于 2019-04-02T14:03:59.200 回答
3

您应该以“超级用户”身份运行脚本,只需在命令前添加“sudo”并在出现提示时输入密码。

所以试试:

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

如果这不起作用,请尝试调整权限:

sudo chmod 755 /dvtcolorconvert.rb
sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
于 2012-09-05T07:30:30.653 回答
2

在文件名之前使用源,,

就像我想从终端运行的文件一样./jay/bin/activate

所以我用了命令"source ./jay/bin/activate"

于 2021-01-31T05:49:01.170 回答
1

检查 Ruby 脚本的权限(可能没有执行权限)、主题文件和目录(以防它无法读取主题或尝试在其中创建其他主题)以及运行时所在的目录脚本(以防它在当前目录中生成临时文件,而不是/tmp)。

其中任何一个都可能让你感到悲伤。

于 2012-09-05T07:30:29.833 回答