web-dev-qa-db-ja.com

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

まず私はMacを使っています。

次に、この「file.sh」を実行する必要があります。実行するたびにTerminalを開いて次のように入力します。

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

これは問題ありませんが、ファイルをダブルクリックで実行させるともっと早くなると思いますよね。

だから私の質問は、どうやってこのファイルをダブルクリックで実行可能にするのですか?

私の考えは次のどちらかでした。

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

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

c)どういうわけかこれを自動化するのですか?

どの方法が最善ですか、それとももっと良い方法がありますか。また、できる限り説明してください。私はTerminalについては初めてです。ありがとう。

143
Jacob

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

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

chmod +x file.command

これがなければ、Terminalは実行を拒否します。

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

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

317
Chris Page

拡張子をすべて削除してからダブルクリックします。ほとんどのシステムシェルスクリプトはこのようなものです。それが持っている限り Shebang それはうまくいくでしょう。

28
NobleUplift

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

  1. ファイルを選択
  2. 情報を見る(cmd-i)
  3. [アプリケーションから開く]セクションで、ポップアップメニューの[その他]を選択します。
  4. アプリケーションとしてTerminalを選択してください

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

  1. ターミナルを起動
  2. タイプ - >ナノファイル名
  3. バッチファイルの内容を貼り付けて保存する
  4. タイプ - > chmod + xファイル名
  5. それはexeファイルを作成するでしょう今あなたはそれをダブルクリックすることができます。

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

cd/Users/yourName/Documents/SeleniumServer

Java -jar Selenium-server-standalone-3.3.1.jar -role hub

それは確かに機能します

5
Manish