私は端末コマンドに精通していないMacを初めて使用し、dvtcolorconvert.rb
ファイルをボリュームのルートディレクトリに置きます。このRubyスクリプトはxcode 3テーマをxcode 4テーマ形式に変換できます。 xxxxxxxx.dvtcolortheme
形式です。
次に、端末でスクリプト/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
を実行しますが、常にプロンプト「Permission denied "」が表示されます。
これは何が問題なのですか?誰も私がこの問題を解決するのを助けることができますか?ありがとう。
Sudo
で実行する前に、回答全体をお読みください
Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
を実行してみてください
Sudoコマンドは、それに続くコマンドを「スーパーユーザー」または「ルート」特権で実行します。これにより、コマンドラインからほとんどすべてを実行できるようになります。つまり、これをしないでください!コンピューターでスクリプトを実行しており、オペレーティングシステムのコアコンポーネントにアクセスする必要がない場合(ホームディレクトリ(〜/)内の何かでスクリプトを呼び出しているためではないのではないかと推測します)、ホームディレクトリから実行する必要があります。
~/dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
〜/またはサブディレクトリに移動して、そこから実行します。そこに許可の問題が発生することは決してないはずであり、OSにとって重要なものにアクセスしたり変更したりするリスクはありません。
それでも問題が解決しない場合は、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文字は、「rwx」の3文字のグループ(読み取り、書き込み、実行)に分割できます。このファイルに実行権を追加する場合は、chmod 755 readme.txt
を実行し、その許可部分はrwxr-xr-x
になります。 ./readme.txt
を実行することで、必要に応じてこのファイルを実行できるようになりました(./は、$ PATH変数を検索するのではなく、目的のコマンドを現在のディレクトリで検索するようbashに指示します)。
schluchc は、chmodのマニュアルページを参照することを暗示しています。これは、man chmod
を実行して行います。これは、特定のコマンドman <command>
に関するドキュメントを取得する最良の方法です
スクリプトを実行する権利を自分に与えましたか?
スーパーユーザーとしての次のコマンドは、これを行います。
Sudo chmod 755 'filename'
詳細については、chmodのmanページをご覧ください。
スクリプトを「スーパーユーザー」として実行し、コマンドの前に「Sudo」を追加し、プロンプトが表示されたらパスワードを入力するだけです。
だから試してください:
Sudo /dvtcolorconvert.rb ~/Themes/ObsidianCode.xccolortheme
これが機能しない場合は、許可を調整してみてください。
Sudo chmod 755 /dvtcolorconvert.rb
Sudo chmod 755 ~/Themes/ObsidianCode.xccolortheme
私の場合、私はシバンで愚かなタイプミスをしていました。
だから、太った指で誰かがこの質問に出くわした場合:
おっと:#!/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
Macで管理者モードで実行するには
Sudo su
Rubyスクリプト(実行権限がない場合があります)、テーマファイルおよびディレクトリ(テーマを読み取れない場合、またはそこに他のテーマを作成しようとする場合)の権限を確認します。andスクリプトを実行するときのディレクトリ(/tmp
ではなく現在のディレクトリに一時ファイルを作成する場合)。
それらのいずれかがあなたを悲しませている可能性があります。