2012-09-05 107 views
35

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

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

这是怎么回事?有人可以帮我解决这个问题吗?谢谢。

回答

36

请尝试使用sudo

运行之前读取整个答案尝试运行sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

sudo命令执行它后面有“超级”或“root”权限的命令。这应该允许你从命令行执行几乎任何东西。这就是说,不要这样做!如果你在你的计算机上运行一个脚本,并且不需要它来访问你的操作系统的核心组件(我猜你并不是因为你正在调用你的主目录内的某个脚本(〜/)) ,那么就应该从你的主目录中运行,即:

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

它移动到〜/或子目录,并从那里执行。你永远不应该有权限问题,那里不会有访问或修改任何关键操作系统的风险。

如果仍有问题,您可以通过在与ruby脚本相同的目录中运行ls -l来检查文件的权限。你会得到这样的东西:

$ 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 

你会注意到自述。txt文件在左侧显示-rw-r--r--。这显示了该文件的权限。右边的9个字符可以分成'rwx'(读,写,执行)3个字符组。如果我想为此文件添加执行权限,我将执行chmod 755 readme.txt,并且权限部分将变为rwxr-xr-x。我现在可以执行这个文件,如果我想通过运行./readme.txt(./告诉bash在当前目录中寻找想要的命令而不是搜索$ PATH变量)。

schluchc暗指查看chmod的手册页,通过运行man chmod来执行此操作。这是获得给定命令文档的最好方法,man <command>

+0

谢谢!但主目录(〜/)在哪里?这意味着桌面? –

+0

shell可以用'echo〜',通常是'/ Users/$ USER'告诉你。桌面只是一个下面的目录。 Unix GUI将主目录从视图中隐藏起来,但它仍然存在。 –

+1

你可以通过运行'echo $ HOME'来获得你的主目录的路径。它可能看起来像/ Users/或可能/ Users/

1

检查你的Ruby脚本的权限(可能没有执行权限),你的主题文件和目录(如果它不能读取主题或试图在那里建立其他主题),目录你'当你运行脚本时(如果它在当前目录中产生临时文件,而不是在/tmp)。

其中任何一个都可能会导致你的悲伤。

0

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

所以尝试:

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

如果这不起作用,尝试适应的权限:

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

Oooh,不是_必要的东西我会建议,除非你是_darn_确定脚本不能伤害任何东西。 – paxdiablo

106

你给自己执行脚本的权利?

以下命令以超级用户会为你做到这一点:

sudo chmod 755 'filename'

有关详情请阅读CHMOD的手册页。

+2

这应该是被接受的答案。清晰,简洁,而且工作正常。 – dialex

+0

我用过:sudo chmod 777'文件名' –

2

就我而言,我在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

相关问题