shell 在Mac提示符“Permission denied”上运行脚本

oyt4ldly  于 2023-04-12  发布在  Shell
关注(0)|答案(8)|浏览(337)

我是新来的mac与不熟悉的终端命令,我把dvtcolorconvert.rb文件的根目录我的卷,这个ruby脚本可以转换xcode 3主题到xcode 4主题格式,这是xxxxxxxx.dvtcolortheme
然后在终端上运行脚本/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme,但总是提示“Permission denied”。
这有什么问题吗?谁能帮我解决这个问题?谢谢。

xe55xuns

xe55xuns1#

你有没有给自己执行剧本的权利?
下面的命令作为超级用户将为您做这件事:
sudo chmod 755 'filename'
有关详细信息,请阅读chmod的手册页。

pokxtpni

pokxtpni2#

在尝试使用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>的文档的最佳方式

o4tp2gmn

o4tp2gmn3#

在我的例子中,我在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

bfrts1fy

bfrts1fy4#

你应该以“超级用户”的身份运行脚本,只需要在命令前面添加“sudo”,并在提示时输入密码。
所以试试看:

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

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

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

elcex8rz5#

在mac中以管理员模式运行

sudo su
5lwkijsr

5lwkijsr6#

在文件名之前使用源,,
像我的文件,我想从终端运行是./jay/bin/activate
所以我使用了"source ./jay/bin/activate"命令

wa7juj8i

wa7juj8i7#

检查Ruby脚本的权限(可能没有执行权限),主题文件和目录(以防它无法读取主题或试图在其中创建其他主题),* 和 * 运行脚本时您所在的目录(以防它在当前目录中创建临时文件而不是/tmp)。
他们中的任何一个都可能让你伤心。

7rfyedvj

7rfyedvj8#

试试这个

*chmod +xfilename.sh

相关问题