在mac提示符下运行脚本“权限被拒绝”

时间:2012-09-05 07:27:20

标签: macos shell terminal

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

然后在终端上运行脚本xxxxxxxx.dvtcolortheme,但它总是提示“ Permission denied ”。

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

7 个答案:

答案 0 :(得分:155)

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

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

sudo chmod 755 'filename'

有关详细信息,请阅读chmod的手册页。

答案 1 :(得分:49)

在尝试使用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

您会注意到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>

的文档的最佳方式

答案 2 :(得分:3)

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

所以试试:

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

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

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

答案 3 :(得分:2)

在我的情况下,我在shebang做了一个愚蠢的错字。

所以,如果有其他人因为肥胖的手指绊倒了这个问题:

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

我打算写:#!/usr/bin/env ruby

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

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

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

答案 4 :(得分:2)

在文件名前使用源,

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

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

答案 5 :(得分:1)

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

他们中的任何一个都可能会让你感到悲伤。

答案 6 :(得分:0)

要在Mac的管理员模式下运行

sudo su