web-dev-qa-db-ja.com

"sh"や "bash"コマンドを使わずにシェルスクリプトを実行するにはどうすればいいですか?

"sh"または "bash"コマンドを使用せずに実行したいシェルスクリプトがあります。例えば:

代わりに:sh script.sh

使いたい:script.sh

これどうやってするの?

P.S (i)私はあまりシェルスクリプトを使っていないのでエイリアスについて読んでみましたが、使い方がわかりませんでした。

(ii)PATH変数でスクリプトを他のファイルとリンクすることについても読みました。大学のサーバーを使用していますが、これらの場所にファイルを作成する権限がありません。

222
Rameez Hussain

ファイルの先頭に "Shebang"を追加します。

#!/bin/bash

そしてあなたのファイルを実行可能にします(chmod +x script.sh)。

最後に、パスを変更してスクリプトが置かれているディレクトリを追加します。

export PATH=$PATH:/appropriate/directory

(通常、あなた自身のスクリプトを格納するのに$HOME/binが欲しいです)

374
fge

これらは、スクリプト名を直接使用するための前提条件の一部です。

  1. 一番上にshe-bang {#!/bin/bash)行を追加します。
  2. chmod u+x scriptnameを使用すると、スクリプトが実行可能になります。 (scriptnameはあなたのスクリプトの名前です)
  3. スクリプトを/usr/local/binフォルダの下に置きます。
  4. スクリプトの名前だけを使用してスクリプトを実行します。

注: /usr/local/binフォルダーの下に置くことをお勧めしたのは、おそらくそれが既にPATH variableに追加されたパスになるからです。

更新:

/usr/local/binフォルダにアクセスできない場合は、次の手順を実行してください。

  1. ホームディレクトリにフォルダを作成し、それをmyscriptsと呼びましょう。
  2. シェルが使用している起動スクリプトを識別するために、ホームディレクトリでls -lartを実行します。 .profileまたは.bashrcのどちらかになります。
  3. 起動スクリプトを特定したら、スクリプトに次の行を追加します - export set PATH=$PATH:~/myscript
  4. 追加したら、起動スクリプトを入手するか、ログアウトしてログインし直します。
  5. scriptnameを使ってスクリプトを実行します。
58
jaypal singh

chmod +xを使用して、実行可能であることを確認してください。デフォルトでは、現在のディレクトリはPATH上にないので、./script.shとして実行するか、修飾パスで参照する必要があります。または、本当にscript.shだけが必要な場合は、PATHに追加する必要があります。 (システムパスを変更するアクセス権がない場合もありますが、現在の環境のPATHをほぼ確実に変更できます。)これは、スクリプトが#!/bin/shのようなもので始まることも想定しています。

また、エイリアスを使用することもできます。エイリアスは、実際にはシェルスクリプトに関連するものではなく、シェルにのみ関連し、次のように単純です。

alias script.sh='sh script.sh'

これにより、script.shの代わりに、単に*.sh(文字通り-これは他のsh script.shファイルでは機能しません)を使用できます。

20
ziesemer

プログラムの実行可能ビットを有効にする必要があります。

chmod +x script.sh

それなら./script.shを使うことができます

あなたの.bashrcファイル(あなたのホームディレクトリにある)のPATHにフォルダを追加することができます。この行をファイルの末尾に追加します。

export PATH=$PATH:/your/folder/here
13
Uku Loskit

この例では、ファイルはmyShellと呼ばれます。

まず最初にこのファイルを作成する必要があるでしょう。次のように入力するだけで始められます。

Sudo nano myShell

.sh拡張子を付けなかったことに注意してください。これは、ターミナルから実行するときに、コマンドを実行するためにmyShellと入力するだけでよいからです。

さて、nanoでは一番上の行を#!/bin/bashにする必要があります。それから続ける前に新しい行を残してもかまいません。

デモのために、基本的なHello World!レスポンスを追加します

だから、私は次のように入力します。

echo Hello World!

その後、私の例は次のようになります。

#!/bin/bash
echo Hello World!

ファイルを保存してから次のコマンドを実行します。

Sudo chmod +x myShell

ファイルを実行可能にしたので、次のコマンドを使って/usr/bin/に移動できます。

Sudo cp myShell /usr/bin/

マシンが正しく実行できることを確認するためだけに、マシンを再起動する必要があります。

私はSudo shutdown -r nowを使いました

おめでとうございます。私たちの命令はこれで完了です!端末でmyShellと入力すると、Hello World!と表示されます。

12
user8493486

あなたはSudo install(スクリプトの名前)/ usr/local/bin /とタイプすることができます(あなたが前記スクリプトを実行するためにタイプしたいもの)

例:Sudo install quickcommit.sh /usr/local/bin/quickcommitパスワードを入力してください

今では.shなしで任意のディレクトリで実行できます。

6
JoelWass

追加します。 PATH変数に(現在のディレクトリ)。
.profileファイルを編集してこれを行うことができます。
.profileファイルに次の行を追加してください
PATH=$PATH:.

スクリプトの先頭にShebang(#!/bin/bash)行を追加し、(chmod +x <File Name>を使用して)スクリプトを実行可能にするだけです。

3
Arpit Tyagi

ただ

/path/to/file/my_script.sh
0
DimiDak

これが私のバックアップスクリプトで、アイデアと自動化を提供します。

サーバー:Ubuntu 16.04 PHP:7.0 Apache2、Mysqlなど...

# Make Shell Backup Script - Bash Backup Script
    nano /home/user/bash/backupscript.sh
        #!/bin/bash
        # Backup All Start
        mkdir /home/user/backup/$(date +"%Y-%m-%d")
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_rest.Zip /etc -x "*Apache2*" -x "*php*" -x "*mysql*"
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_Apache2.Zip /etc/Apache2
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_php.Zip /etc/php
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/etc_mysql.Zip /etc/mysql
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_rest.Zip /var/www -x "*html*"
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/var_www_html.Zip /var/www/html
        Sudo Zip -ry /home/user/backup/$(date +"%Y-%m-%d")/home_user.Zip /home/user -x "*backup*"
        # Backup All End
        echo "Backup Completed Successfully!"
        echo "Location: /home/user/backup/$(date +"%Y-%m-%d")"

    chmod +x /home/user/bash/backupscript.sh
    Sudo ln -s /home/user/bash/backupscript.sh /usr/bin/backupscript

/ home/userを自分のユーザーディレクトリに変更し、次のように入力します。 backupscript 端末の任意の場所にスクリプトを実行します。 (/ usr/binがパスにあると仮定して)

0
Tarik

スクリプトの前に"#!/bin/sh"を入力してください。それをscript.shとして保存します。それを$HOME/binまたは$HOME/usr/binにコピーしてください
ディレクトリはLinuxのディストリビューションごとに異なる場合がありますが、それらは'bin'で終わり、ホームディレクトリcd $HOME/binまたは$HOME/usr/binにあります
chmod 700 script.shと入力してください
そしてターミナルでrun.shとタイプするだけで実行できます。うまくいかない場合は、chmod +x run.shの代わりにchmod 700 run.shを試してください。

0
Gyan Prakash