Macプロンプト「Permissiondenied」でスクリプトを実行する


83

私はターミナルコマンドに慣れていないMacを初めてdvtcolorconvert.rb使用します。ファイルをボリュームのルートディレクトリに置きます。このルビースクリプトは、xcode3テーマをxcode4テーマ形式に変換できxxxxxxxx.dvtcolorthemeます。

次に/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme、ターミナルでスクリプトを実行しますが、常に「アクセスが拒否されました」というプロンプトが表示されます。

これの何が問題になっていますか?誰かが私がこの問題を解決するのを手伝ってくれる?ありがとう。

回答:


72

で実行する前に、回答全体をお読みください sudo

実行してみてください sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme

sudoコマンドは、それに続くコマンドを「スーパーユーザー」または「ルート」権限で実行します。これにより、コマンドラインからほとんどすべてを実行できるようになります。そうは言っても、これをしないでください!コンピューターでスクリプトを実行していて、オペレーティングシステムのコアコンポーネントにアクセスするためにスクリプトを必要としない場合(ホームディレクトリ(〜/)内の何かでスクリプトを呼び出しているので、そうではないと思います)、次に、ホームディレクトリから実行する必要があります。

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

〜/またはサブディレクトリに移動し、そこから実行します。そこにアクセス許可の問題が発生することはなく、OSにとって重要なものにアクセスしたり変更したりするリスクはありません。

それでも問題が解決しない場合は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文字は、「rwx」の3文字のグループに分割できます(読み取り、書き込み、実行)。このファイルに実行権限を追加したい場合は、実行するchmod 755 readme.txtと、その権限部分はになりrwxr-xr-xます。実行して、必要に応じてこのファイルを実行できるようになりました./readme.txt(./は、$ PATH変数を検索するのではなく、現在のディレクトリで目的のコマンドを探すようにbashに指示します)。

schluchcは、chmodのマニュアルページを参照することをほのめかしていman chmodます。これを実行するには、を実行します。これは、特定のコマンドに関するドキュメントを取得するための最良の方法です。man <command>


ありがとう!しかし、ホームディレクトリ(〜/)はどこにありますか?デスクトップという意味ですか?
andy_24 2012

シェルはecho ~、通常、でそれを伝えることができます/Users/$USER。デスクトップはその下のディレクトリです。Unix GUIはホームディレクトリを非表示にしますが、それでもそこにあります。
Henk Langeveld 2012

1
を実行すると、ホームディレクトリへのパスを取得できますecho $HOME。/ Users / <username>または/ Users / <iTunes username>のようになります
sean_m 2012

@sean_m詳細な説明をありがとう、私はすでにそれを知っています。
andy_24 2012

素晴らしい返信をありがとう
Faris Rayhan 2016

243

スクリプトを実行する権利を自分に与えましたか?

スーパーユーザーとしての次のコマンドは、これを実行します。

sudo chmod 755 'filename'

詳細については、chmodのmanページをお読みください。


4
これは受け入れられた答えでなければなりません。明確で簡潔で、それはうまく機能します。
dialex 2016年

3
使用したもの:sudo chmod 777 'ファイル名'
Hemant Kaushik 2017

@HemantKaushik確かに、どちらも機能しますが、違いを知っていますか?
hally9k 2018

2
@ hally9k 777を使用すると、誰でもファイルを変更できます。755では、あなたとrootユーザーだけがファイルを変更できるため、ファイルの安全性が高まります。
スティーブブリーズ

4

私の場合、私はシェバンで愚かなタイプミスをしました。

したがって、太い指を持っている他の誰かがこの質問に遭遇した場合:

おっと: #!/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


3

スクリプトは「スーパーユーザー」として実行する必要があります。コマンドの前に「sudo」を追加し、プロンプトが表示されたらパスワードを入力します。

だから試してみてください:

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

これが機能しない場合は、権限を調整してみてください。

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

2
ああ、そうではない 必ずしもあなたがしている場合を除き、私がお勧めしたい何かくそ確認スクリプトが何を傷つけることはできません。
paxdiablo 2012


1

Rubyスクリプトのアクセス許可(実行権限がない可能性があります)、テーマファイルとディレクトリ(テーマを読み取れない場合、またはそこに他のテーマを作成しようとする場合)、および実行時に現在のディレクトリを確認します。スクリプト(スクリプトではなく現在のディレクトリに一時ファイルを作成する場合/tmp)。

それらのいずれかがあなたに悲しみを引き起こしている可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.