ダブルクリックでこのfile.shを実行可能にするにはどうすればよいですか?


165

まず、Macを使用しています。

次に、この「file.sh」を実行する必要があります。これを呼び出します。実行する必要があるたびに、ターミナルを開いて次のように入力する必要があります。

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

これで大丈夫ですが、ダブルクリックでファイルを実行させた方がずっと早いと思いますよね?

だから私の質問は、このファイルをダブルクリックで実行できるようにするにはどうすればよいですか?

私の考えは次のいずれかでした。

a)chmodのようなものを端末に入力し、権限を変更しますか?

b)ファイルを作成し、上に書いたコードをその中に入れてから、そのファイルを実行可能にしますか?

c)これを行うために何らかの方法で自動化を行いますか?

どちらの方法が最適ですか、それとももっと良い方法がありますか?また、ターミナルについては初めてなので、できるだけ詳しく説明してください。ありがとう。


1
クリックしやすいスクリプトが必要な場合は、はい、Automatorが最適なツールです。あなたはあなたの質問からそれを知っているようです、それであなたの質問は何ですか?
Rob Napier

同じ質問ですが、jdk dmg、アイコンを作成するためのいくつかのアプリフォルダー、いくつかのJarがありますが、オートマトンまたは.commandを介して実行/作成できませんでした
SANTOSH

回答:


349

デフォルトでは、*.shファイルはテキストエディター(XcodeまたはTextEdit)で開かれます。ターミナルを開いたときにターミナルで実行するシェルスクリプトを作成するには、「コマンド」拡張子を付けて名前を付けます(例:)file.command。デフォルトでは、これらはターミナルに送信され、ターミナルがシェルスクリプトとしてファイルを実行します。

また、ファイルが実行可能であることを確認する必要があります。例:

chmod +x file.command

これがないと、ターミナルはそれを実行することを拒否します。

#!この特定のシナリオでは、ターミナルはデフォルトのシェルで実行するように特別に調整されているため、スクリプトはプレフィックスで始まる必要がないことに注意してください。(もちろん、#!使用するシェルをカスタマイズしたい場合、または別のシェルを使用しているときにコマンドラインから実行できるようにしたい場合は、行を追加できます。)

また、ターミナルは作業ディレクトリを変更せずにシェルスクリプトを実行することにも注意してください。cd特定の作業ディレクトリで実際に実行する必要がある場合は、スクリプトをコマンドで開始する必要があります。


1
より役立つ回答をありがとう。
Jacob

46
また、を使用cd "`dirname "$0"`"して、現在の作業ディレクトリをシェルskriptがあるディレクトリに設定することもできます。
gearsdigital 2013年

3
審美的な理由から、.commandファイルを右クリックして情報を開く必要もあります。そこで、サフィックスを非表示にするオプションがあります(名前とサフィックスの下)。
Bijan 2013

この方法を使用して、open -n ...コマンドを介してアプリを実行します。動作しますが、ターミナルウィンドウが開いて「[Process completed]」と表示されるたびに。ターミナルウィンドウの外観をどうにかして防ぐことはできますか?
Nik

1
@Nikターミナルウィンドウに表示したくない場合は、ターミナルで実行しても意味がありません。代わりに、実行可能ファイルがシバンスクリプトであるアプリケーションバンドルにします。または、スクリプトを実行するAppleScriptまたはAutomatorアプレットを作成します。ターミナルの設定を使用して、プロセスの終了時にウィンドウを閉じるようにプロファイルを変更することもできますが、ユーザーの操作なしでシェルスクリプトを実行するだけの場合は、これは最善の解決策ではありません。
クリスページ

31

拡張機能を完全に削除してから、ダブルクリックします。ほとんどのシステムシェルスクリプトはこのようなものです。それがシバンを持っている限り、それは働きます。


1
ところで、「シバン」はほとんどの行の前のこの行です。
Lukas Liesis、2016年

このアプローチでは、chmodを実行する必要はありませんか?
Atulの

11

Finder .shにターミナルでファイルを開くように指示するだけです。

  1. ファイルを選択
  2. 情報を取得(cmd-i)
  3. [プログラムから開く]セクションで、ポップアップメニューの[その他...]を選択します
  4. アプリケーションとしてターミナルを選択します

これは、名前を変更した場合とまったく同じ結果になり.commandます。ただし、名前を変更する必要はありません:)


8
  1. ターミナルを起動
  2. タイプ-> nano fileName
  3. バッチファイルの内容を貼り付けて保存する
  4. タイプ-> chmod + x fileName
  5. ダブルクリックして実行できるようになりました。

ファイル名は二重引用符で囲む必要があります。Macを使用しているので、私の場合、バッチファイルの内容は

cd / Users / yourName / Documents / SeleniumServer

java -jar selenium-server-standalone-3.3.1.jar -role hub

それは確かに動作します


0

chmodこのように使用して、実行可能ファイルを変更できます

chmod 755 file.sh

このコマンドを使用して実行します

./file.sh

SOへようこそ!あなたの答えはすでに受け入れられた答えに何も追加しません。なぜこれが既存の他の回答と異なるのか説明してください。
GabrielOshiro
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.