.shスクリプトを実行するにはどうすればよいですか?


344

.shファイルを開くたびに、ターミナルではなくgeditで開きます。右クリックアプリケーションで開くその他のアプリケーション...ターミナルに似たオプションが見つかりません。

ターミナルでこのファイルを開くにはどうすればよいですか?


そのスクリプトは、今後の使用のためにenv変数を設定することを目的としていますか?
ロブ

1
スクリプトで拡張機能を使用しないでください。将来のある時点で、現在のスクリプトが実行しているタスクを実行するのに、別の言語の方が適している場合があります。そして、あなたには問題があります。完全に誤解を招く拡張子を持つ古い名前を保持しますか、それとも名前を変更しますか、おそらくスクリプトが使用される場所の多くを編集する必要がありますか?
ガイラ

ファイル拡張子は必要ありません。持っていいのですが、必要ではありません。OSはファイル拡張子を調べません。データを見る
ActionParsnip

5
Meh、foo.shをrubyで書き換えた場合、.shファイルを使用していつでも起動できますruby foo.rb
グレンジャックマン

Dolphinでは、F4を押すとコンソールが開きます
Motte001

回答:


523

スクリプトに実行許可を与えます。

chmod +x /path/to/yourscript.sh

スクリプトを実行するには:

/path/to/yourscript.sh

以来.、現在のディレクトリを参照する次の場合yourscript.sh、現在のディレクトリにある、あなたはこれを簡素化することができます。

./yourscript.sh

13
+1のみの回答は、端末のみの方法で実行権限を追加することを示します。
ヘイルウッド

83
あなたが行う場合bash /path/to/yourscript.sh、あなたは必要ありませんchmod +x
アレクサンドルLevchuk

4
実際、. /path/to/yourscript.shスクリプトで環境変数を設定する必要がある場合に使用できます。
ロブ

1
誰も伝統的なことについて言及していません:(./path/to/yourscript.sh後にスペースなしで.)?私は1つが使用する最も簡単かつ最も簡単であることがわかります...しかし、とにかく、ここではほぼ同じやるべき私の代わりである./あなたが使用することはありませんなぜ私が表示されていないものの、希望./(FILENAME=~/rem4space.sh;SLL=$(cat $FILENAME|head -1|sed 's:^#!\(.*\):\1:g');[ ! -z $SLL ] && exec $SLL $FILENAME;sh $FILENAME)...編集FILENAMEお好みに合わせて。またsh、代替手段がない場合に使用されることに注意してください。
ミジン

88

ファイルマネージャーから実行するには、シェルスクリプトを実行可能としてマークする必要があります。

  1. .shファイルを右クリックして、[ プロパティ ] を選択します

    ここに画像の説明を入力してください

  2. では権限 ]タブ、チェックプログラムなどのファイルを実行する許可

    ここに画像の説明を入力してください

  3. [ プロパティ]ウィンドウを閉じて、ファイルをダブルクリックします。ダイアログがポップアップ表示され、ターミナルでスクリプトを実行するオプションが表示されます。

    ここに画像の説明を入力してください


10
これはUbuntu 13.04では機能しません。とにかくgeditを開いたままにし、実行するように要求しない。編集:Nvm、imjustmatthewがこれに答えます。
mpen

これを使用する前に、chmodを使用して実行するためのファイル許可を作成する必要があります。chmod + x filename.shまたはchmod 755 filename.sh
Arvind Rawat

ポップアップがありません!IDEはポップアップではなくすぐに開かれます
Green

インターフェイスのどこにも「端末で実行」が見つからないのはなぜですか?(Ubuntu 18.04)
ダニエルメーラー

1
@DanielMöller、あなたの質問に対する答えはこちらです。askubuntu.com/questions/38661/how-do-i-run-sh-files/...
AkhileshダールDubeyさん

33

ターミナルを開き、.shファイルが保存されているフォルダーに移動します。次に入力します:

sh <name of file>.sh

アプリケーションを開く最良の方法。.shディレクトリに移動し、コマンドプロンプトで開きます。使用sh <上記のファイル名> .sh許可が必要な場合は、chmod + x /path/to/yourscript.shを使用するか、右クリックして許可をすべてに変更します
Durgesh Kumar

24

前提条件

.shファイルを実行する前に、実行可能にする必要があります。

  1. ファイルを右クリック
  2. プロパティを選択
  3. 権限を選択
  4. [ 実行ファイルをプログラムとして許可する]を選択します

警告

ファイルを取得したソースを信頼していることを確認してください。ウイルスかもしれません。

非常に簡単な方法

  1. ファイルをダブルクリックします
  2. ターミナルで実行をクリックします

これには問題があります。ターミナルはすぐに閉じられ、出力を見ることができなくなります。

簡単な方法

  1. アプリケーションを開く->アクセサリ->ターミナル
  2. .shファイルをターミナルにドラッグアンドドロップし、Enterキーを押します

専門家のやり方

  1. アプリケーションを開く->アクセサリ->ターミナル
  2. .shファイルの場所を見つける

    • lsおよびcdコマンドを使用する
    • ls現在のフォルダ内のファイルとフォルダをリストします。試してみてください:「ls」と入力してEnterキーを押します。
    • 目的のフォルダーが表示されたら、を実行しcd、次にスペース、フォルダー名を入力します
    • 不要なフォルダーに移動した場合は、cd ..1レベルに移動してください
  3. .shファイルを実行する

    • たとえばscript1.shlsこれを実行して確認できたら:

      ./script.sh

なぜ複雑な方法ですか?

ターミナルには、コマンドを入力することでアクセスできる強力なツールの豊富なセットがあります。専門家は、lsと入力して.shファイルを見つけますcd。正しい現在のフォルダーに移動したら、次のようなスクリプトを実行できます。

./script1.sh

または、実行してファイルに出力をリダイレクトできます。

./script1.sh > out.txt

または、キーワード(「リンゴ」など)の出力をフィルタリングして、ファイルにリダイレクトできます。

./script1.sh | grep apples > ./only-apples

いくつかのコマンドを入力するだけで、そのファイルに対してできることは何千もあります。

もう1つは、1つの簡単なコマンドでインターネットからファイルをダウンロードできます。

wget www.google.com/images/logos/ps_logo2.png

そして、次のようにファイルを開きます。

shotwell ps_logo2.png

6
イムことを確認していない専門家がそれを行う方法が正しいか、それはより多くのケースだ簡単な方法(出力の制御のためのための)高度な方法
ヘイルウッド

プロが最初のトライアルで行ったのと同じ方法でやったことを知ってうれしいです。これが基本的なユーザーのやり方だと思いました。
NelsonGon

19

Ubuntu 13.04では、Nautilusで開かれた実行可能ファイルは、ユーザーに実行を促すのではなく、デフォルトでgeditで開かれるようになりました。従来の動作を有効にするには、設定を調整する必要があります。

Nautilus→[編集]メニュー→[設定]→[動作]タブ→[毎回確認]の近くのラジオボタンをクリックします。


質問をした人はUbuntu 10.10について話している
-edwin

1
ありがとうございました!!!なぜこれを変更するのか、何を実行するのか分からないのかわかりません。
mpen

1
これは最新のubuntusの正しい答えです。
gaRex

15.10でNautilusにどうやって行きますか?
YaakovのAinspan

Ubuntu 18.04の時点では、ディレクトリを開いてトップバーの[ファイル]-> [設定]をクリックすると、設定にアクセスできます。
tparker

7

.shを使用して、ファイルがあるディレクトリに移動しますcd。この例では、shファイルを次のように保存しています。~/Desktop/shell_practice/test.sh

最初pwdにあなたがどこにいるかを把握し、それが戻ってきたら/home/usernameusername実際のユーザー名はどこですか)、

cd Desktop/shell/practice

別の場所にいるようであれば、絶対パスを使用できます

cd ~/Desktop/shell/practice

または

cd $HOME/Desktop/shell/practice

あるいは

cd /home/$USER/Desktop/shell/practice

これらはすべて同じ場所を記述する方法です。スクリプトの場所に到達したら、次のように入力します

ls

あなたが見ることができる場合はsh、出力にファイルを、あなたは使用することができchmod、それが実行可能にします。私の場合はtest.sh、ファイル名がであることに注意してください。

chmod u+x test.sh

スクリプトと同じディレクトリに移動したので、ファイルの場所./(現在のディレクトリの後にファイル名と区別するためのパス区切り文字)を指定して、ファイルを実行するシェルを指定する必要があります。ファイルを実行するには、次のように入力します。

./test.sh

スクリプトが正しく記述されていれば、エラーなしで実行されます...

以下に実際の例を示します。 ここに実例があります


これは、NetbeansをUbuntuにインストールするのに役立ちました
-RuD3B0y

1
ちなみに、@ RuD3B0y、私はあなたが歓迎されるいくつかの編集がある場合、初心者、ハイテクコンテンツなしに最高の答えを維持しようとしました。
TheExorcist

4

2つの主要なステップ。

  1. ターミナルで、geditを使用して、「。sh」拡張子を持つスクリプトをデスクトップに書き込み、保存します。(ただし、任意のテキストエディターを使用できます)

  2. Nautilusを開き、script.shファイルを右クリックします。

    • プロパティの下で、「実行ファイルを許可する」チェックボックスをオンにします。

    • Nautilusメニューで、[ファイル]をクリックしてから[設定]を選択し、次に動作

    • 「実行時に実行可能なテキストファイルを開く」を確認してください。

これで、デスクトップ上のファイルをダブルクリックすると、実行されるはずです。.またはの必要はありません./


3
  1. .shファイルを右クリックして、実行可能にします。

  2. ターミナルを開きます(Ctrl+ Alt+ T)。

  3. .shファイルをターミナルウィンドウにドラッグし、a敬の念を抱きます。


1
Ask Ubuntuへようこそ!この回答を編集して、最初のステップの実行方法に関する具体的な詳細を追加することをお勧めします。(AskUbuntuでどのような回答が最も価値があると考えられるについての一般的なアドバイスについては、「良い回答を書くにはどうすればよいですか?」も参照してください。)
David Foerster

3

これを行うにはいくつかの方法があります。

オプション1

  1. ターミナルで、Bashファイルが使用しているディレクトリにアクセスしますcd(ディレクトリの変更)。

    cd Downloads

  2. 走る bash <filename>.sh

    これは.runファイルでも機能します。このWebページには、Rhythmboxの更新に関するこの使用例があります。

オプション2

  1. ターミナルで、bashファイルがあるディレクトリに移動します。

  2. 走る chmod +x <filename>.sh

  3. Nautilusでファイルを開きます。


3

以下のためのUbuntu 18.04、あなたがポップアップダイアログを取得しないように、少し変更があります。

だからあなたがする必要があるのは:

「ファイル」を右クリックし、「設定」>「動作タブを選択」>「実行可能テキストファイルの下にある「何をするか尋ねる」オプションを選択します。

これで、任意の.shファイルをダブルクリックすると、ポップアップが表示されます。そこで、「端末で実行」オプションを選択して.shファイルを実行できます。

ここに画像の説明を入力してください


2

Ubuntu 16.04では、ターミナルで開く方法は次のとおりです。

File Manager > Edit > Preferences > Behaviorforに移動してをExecutable Text Files選択します Ask each time

問題は、デフォルトでに設定されていることView Executable Files when they are openedです。


1

作成したシェルスクリプトまたはその他の実行可能ファイルを/ usr / local / binに配置すると、コマンドラインでフォルダーパスを指定したり、名前に./を追加したりすることなく、検出および実行されます。たとえば、次の簡単な3行のbashスクリプトを作成して、ディスクUUIDを表示します。

#!/bin/bash
echo "* UUIDs must match in /etc/fstab and /boot/grub/menu.lst"
sudo blkid

ファイルuuidを呼び出し、/ usr / local / binに配置しました。コマンドラインで入力する必要があるのは次のとおりです。

uuid

0

まあ、私も同じ問題に直面しました。.shファイルを実行したかったので、CentOS 7のGeditで開きました。そこで、次のようにしました。

  1. .sh実行したいファイルのパスに移動しました。
  2. ターミナルを開きました。
  3. そして、単にターミナルウィンドウにドラッグアンドドロップすると、そのファイルがパスとともに入力として自動的に取得されました。
  4. Enterキーを押すと、準備完了です!

0

いくつかのディストリビューションで見つかった問題は、Nautilusの設定オプションが非表示になっていることですが、Gnome3を使用してUbuntuやその他のディストリビューションで修正することは同じです将来的にどのように)。

  1. インストール dconf-editor

    sudo apt-get install dconf-editor
  2. dconf-editorroot以外のユーザーアカウントを使用して実行します

    dconf-editor
  3. 次のスキーマに移動します。

    org.gnome.nautilus.preferences

  4. デフォルトで開かないようにデフォルトオプションを変更します。

    検索executable-text-activation単語をクリックdisplayしてに変更ask

これにより、今後ファイルを編集、表示、または実行するオプションが提供されます


0

私はLinuxの初心者であり、同じ問題を抱えていました。他のすべてが失敗した場合:

  1. ターミナルを開く
  2. .shファイルを含むフォルダーを開きます
  3. ファイルをターミナルウィンドウにドラッグアンドドロップします
  4. ファイルのパスがターミナルに表示されます。を押しEnterます。
  5. 出来上がり、.shファイルが実行されます。

-2

.他の答えを提案して、トリックを使用することもできます。

例えば:

chmod +x filename.sh、既にファイルへのパスに移動している場合、次のコマンドのいずれかを使用してファイルを実行します。

sh filename.sh

./filename.sh

. filename.sh

2
警告:これら3つのコマンドは同等ではありません。シバンが別のバイナリ(Stackなど)を参照する場合、3番目のコマンドは引数をBashで解析しようとしますが、失敗します。
ジェズントーマス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.