シェルスクリプトを保存する

シェルスクリプトを保存する

シェルスクリプトを保存する一般的な良い方法は何ですか? (強打、シェン、...)

現在私のディレクトリ$HOMEにbashスクリプトとshスクリプトがあります。

私はそれらを使って呼び出す

$ bash $HOME/script1.bash arg1, arg2, ...

または

$ sh $HOME/script2.sh arg1, arg2, ...

標準の場所に保存し、通常のアプリケーション(たとえば、、、ls... pwd)で呼び出すことはできますか?例えば

$ script1 arg1, arg2, ...
$ script2 arg1, arg2, ...

高度なLinuxユーザーの一般的な慣行は何ですか?

答え1

ファイルシステムに属するスクリプトを保存し、binホームディレクトリにディレクトリを作成できます。次へ追加

if [ -d "$HOME/bin" ] ; then
    export PATH="$HOME/bin:$PATH"
fi

.bashrcすべての実行可能ファイルを検索可能にします~/bin。最後に、ディレクトリにファイルを追加するだけです。シンボリックリンクを使用してから検索したいスクリプトを指すことができます~/bin。これにより、スクリプト名を仮想に変更し、ファイルシステム上の任意の場所に保持できます。たとえば、ファイルの場合は、my_script.shまずファイルが実行可能であることを確認してください。

chmod u+x my_script.sh

次にシンボリックリンクを作成します。

ln -s my_script.sh ~/bin/my_script

専用フォルダにあります。便宜上、拡張機能を削除しました。これで、コマンドを使用してどこからでもスクリプトを実行できますmy_scriptmy_script.shソースファイルを編集するたびにシンボリックリンクを作成する必要はありません。

編集する:一部のインタプリタを介してテキストファイルを実行可能にするには、次のものを使用できます。シェルボーン。 bashスクリプトの場合、これは追加を意味します。

#!/bin/bash

ファイルの最初の行に。この技術はbashスクリプトに限定されず、Pythonでも動作します。

#!/usr/bin/env python

メモ:個人的な好みに応じて個人的に使用し~/.local/binますが、ほとんどの人は隠されたディレクトリではなく家に直接あるディレクトリを使用します。多くのディストリビューションはそれを直接統合しています。たとえば、debian または ubuntu は、対応するディレクトリがある場合は自動的に追加します (提供されるデフォルトファイルにあります)。私の選択は、すでに多くのソフトウェアでそれを使用しているという事実に基づいていました。~/binbinPATH.profile.local/share

答え2

これらのスクリプトの一般的なパスはです$HOME/bin。パスがまだない場合は$PATH追加する必要があります。

PATH=$HOME/bin:$PATH

.profile.bash_profileまたはファイルに追加します.bashrc

答え3

シェルスクリプトを実際のプログラムとして管理するには、いくつかのステップがあります。

  1. スクリプトの実行モードをオンにします。

    chmod +x myscript.sh
    
  2. システムにスクリプトの実行方法を知らせるソルバー文字列(#!「hash-bang」と表示)を使用してスクリプトを起動します(デフォルトはシェルスクリプトですが、それに依存しません)。

     #!/bin/bash
    
  3. スクリプト(およびコンパイルされたプログラム、違いはありません)をディレクトリに集め、そのディレクトリを実行に入れますPATH。独自のスクリプトの慣例的な場所はありますが、$HOME/bin実際にはあなた次第です。

    これを将来のシェルに入れると、~/.profileorを見つけるのと同じ方法でスクリプトを見つけることができます。 (もちろん後者が別名でない限り:-))lsmake

    export PATH="$HOME/bin:$PATH"
    
  4. UnixはWindowsとは異なり、実行可能ファイル拡張子を無視しません。スクリプトが呼び出されたら、それを実行するにはmyscript.sh入力する必要があります。myscript.shしたがって、名前を次のように変更してくださいmyscript。ソースコードの最初の行は、それがどのタイプのスクリプトであるかを正確に伝えます。

    mv myscript.sh myscript
    

myscriptこれで完全に一般的なコマンドなので、他のコマンドと同じように実行できます。すでに実行可能ファイルと同じ名前がある場合は、そのファイルをPATH最初に指定するので優先されます$HOME/bin。 (ご希望の場合は一番最後に入れてください。)

答え4

はい、作業ディレクトリに関係なく、名前でスクリプトを呼び出すように設定できます。

スピード

  1. ディレクトリ内のファイルが実行可能であることを確認してください。chmod
  2. バイナリ実行可能ファイルではないスクリプトの場合は、スクリプトが適切なもので始まっていることを確認してください。シェルボーン
  3. ファイルが含まれているディレクトリがあることを確認してくださいPATH
    • ただし、まず適切なディレクトリであることを確認してください(次のセクションを参照)。
  4. 簡単なコマンド名でスクリプトにアクセスするには、ファイル拡張子を削除するか、ディレクトリに目的の名前でシンボリックリンクを作成します。
    • これは完全にオプションです。
    • シンボリックリンクを作成するには:ln -s origfile linkname

スクリプトを置く場所

では、実行可能ファイルをどのディレクトリに入れる必要がありますか?最終的に、スクリプトがどのようにシステムに表示されるかを決定します。

  • あなたがシステム管理者であり、必要な場合みんなスクリプトを実行するには、スクリプトをに配置します/usr/local/bin
    • このディレクトリはすでにPATH多くのシステムにデフォルトで存在します。
  • あなただけがアクセスできるようにするには、に入力してください~/bin

別の記事では、実行可能なスクリプトとバイナリをどこに配置する必要があるかについての有用な情報を提供します。Linuxでアイテムをどこに置くかをどうやって知ることができますか?

関連情報