web-dev-qa-db-ja.com

ダブルクリックしてOS Xでシェルスクリプトを実行する方法

OS Xでのユーザー実行権限を持つシェルスクリプトを持っていますが、ダブルクリックするとテキストエディタで開きます。ダブルクリックして実行するにはどうすればよいですか?

210
c2h2
  • まずターミナルで、次のように入力してスクリプトを実行可能にします。

    chmod a+x (yourscriptname)
    
  • 次に、Finderでファイルを右クリックし、[アプリケーションから開く]、[その他]の順に選択します。

  • ここでファイルを実行したいアプリケーションを選択します。この場合それはTerminalです。端末を選択できるようにするには、「推奨アプリケーション」から「すべてのアプリケーション」に切り替える必要があります。 (Terminal.appアプリケーションはUtilitiesフォルダにあります)

  • すべてのファイルをこの拡張子に関連付けて端末で実行したくない場合を除き、[常に開く]チェックボックスをオンにしないでください。

  • OKをクリックした後、あなたはそれをダブルクリックすることによってあなたのスクリプトを実行することができるはずです。
244
Lus

.commandファイル名拡張子を使用してみましたか?

211
Hagelin

OSX 10.10(ヨセミテ)以降および少なくともOS X 10.8(Mountain Lion)以降open(ダブルクリック)executable scriptsfrom Finderの場合の動作は次のとおりです。

  • Executableスクリプト[1] サフィックスなしまたはサフィックス.command
    • executedはデフォルトで-セットアップは不要です
      • newターミナルウィンドウが開き、スクリプトが実行されます。
      • デフォルトでは、ウィンドウはopenのままですスクリプトの終了後、出力を検査(ただし、その時点でスクリプトを実行したシェルは終了し、interactと一緒に使用することはできません)。
        ただし、ターミナルのPreferences... > Profilesを使用すると、スクリプトの終了時に自動的にcloseウィンドウを選択できます。
    • 警告作業フォルダーは常に現在のユーザーのhome folderであり、スクリプトが置かれているフォルダーではありません。
      • シェルスクリプトを、それが置かれているフォルダーに変更するには、place
        • cd -- "$(dirname "$BASH_SOURCE")" Shebangラインの直後
        • または、POSIX準拠のままにする必要がある場合は、cd -- "$(dirname "$0")"
        • symlinkedスクリプトの真のソースディレクトリの検索など、Edgeの場合については、 この回答 を参照してください。
    • スクリプトが予期せずnot実行可能ファイルである場合
      • ターミナルでchmod +x <script>を実行して実行可能にします。そうしないと、次の症状が表示されます。
      • .command:Finderは、File > Get Infoを介して問題を修正できることを示唆する誤解を招くエラーメッセージを表示しますが、これは正しくありません。上記のchmod +xメソッドを使用してください。
      • 接尾辞なし:
        • withShebang行(例:#!/bin/bash):動作は、接尾辞が.shであるかのようになります-以下を参照してください。
        • noShebang行:デフォルトのテキストエディター(デフォルトではTextEdit)で開きます。
  • サフィックス.shのスクリプト、実行可能かどうか:
    • TextEdit.appeditingに対して開かれますまたは、インストールされている場合はXcode.appで。
  • サフィックス.scptまたは.applescriptを持つスクリプト(それらが実行可能としてマークされている場合でも、通常はそうではありません):
    • [Apple]Script Editoreditingのために開かれます
    • JXA source-codeファイルには、明確な接尾辞がない(まだ)ように見えることに注意してください。
  • acustomサフィックス(システムにまだ知られていないサフィックス)を含むスクリプト、実行可能かどうか(実際、あらゆる種類のファイルに適用):
    • Promptyofirstそれらを開く)、および覚えているその選択

[1]Executableは、実行可能アクセス許可ビットが設定され、呼び出し元ユーザー(ファイルの所有権に関連する)を持つスクリプトであるため、実行を許可される可能性があります。
chmod a+xを使用してall許可ビット(通常)を設定すると、anyoneで呼び出すことができます(これらも許可されている場合)readread許可ビットとファイルの所有権に基づくファイル)。

136
mklement0

あるいは、 Platypus を使って、スクリプトから通常のMac OS Xアプリケーションを作成することもできます。

38
svth

簡単な方法は、拡張子を.commandまたは拡張子なしに変更することです。

しかし、それはターミナルを開くでしょう、そしてあなたはそれを閉じる必要があります。出力を見たくない場合は、Automatorを使ってダブルクリック、ドックへの追加などができるMacアプリケーションを作成できます.

  1. Automatorアプリケーションを開く
  2. 「アプリケーション」タイプを選択してください
  3. [Actions]検索ボックスに「run」と入力します。
  4. 「シェルスクリプトの実行」をダブルクリック
  5. テストするには、右上隅にあるRunボタンをクリックします。
  6. アプリケーションを作成するためのFile > Save

enter image description here

11
wisbucky

Platypusなどのサードパーティ製アプリを使用する必要はありません。

Script EditorでApple Scriptを作成し、直接のコマンド呼び出しまたは実行可能なシェルスクリプトファイルにdo Shell script "Shell commands"コマンドを使用し、編集可能なスクリプトファイルを安全な場所に保存してからエクスポートして、アプリケーションスクリプトを作成します。アプリのスクリプトは、ダブルクリックするかバーフォルダで選択することで起動可能です。

8
Luc-Olivier

RCDefaultAppを使用してファイル拡張子でデフォルトを設定することもできます。

http://www.rubicode.com/Software/RCDefaultApp/

iTerm/Terminalなどで開くように.shを設定することもできます。

chmod u+x filename.sh

RCDefaultApp pref pane

0
Tomachi