
シェルスクリプトを保存する一般的な良い方法は何ですか? (強打、シェン、...)
現在私のディレクトリ$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_script
。my_script.sh
ソースファイルを編集するたびにシンボリックリンクを作成する必要はありません。
編集する:一部のインタプリタを介してテキストファイルを実行可能にするには、次のものを使用できます。シェルボーン。 bashスクリプトの場合、これは追加を意味します。
#!/bin/bash
ファイルの最初の行に。この技術はbashスクリプトに限定されず、Pythonでも動作します。
#!/usr/bin/env python
メモ:個人的な好みに応じて個人的に使用し~/.local/bin
ますが、ほとんどの人は隠されたディレクトリではなく家に直接あるディレクトリを使用します。多くのディストリビューションはそれを直接統合しています。たとえば、debian または ubuntu は、対応するディレクトリがある場合は自動的に追加します (提供されるデフォルトファイルにあります)。私の選択は、すでに多くのソフトウェアでそれを使用しているという事実に基づいていました。~/bin
bin
PATH
.profile
.local/share
答え2
これらのスクリプトの一般的なパスはです$HOME/bin
。パスがまだない場合は$PATH
追加する必要があります。
PATH=$HOME/bin:$PATH
.profile
、.bash_profile
またはファイルに追加します.bashrc
。
答え3
シェルスクリプトを実際のプログラムとして管理するには、いくつかのステップがあります。
スクリプトの実行モードをオンにします。
chmod +x myscript.sh
システムにスクリプトの実行方法を知らせるソルバー文字列(
#!
「hash-bang」と表示)を使用してスクリプトを起動します(デフォルトはシェルスクリプトですが、それに依存しません)。#!/bin/bash
スクリプト(およびコンパイルされたプログラム、違いはありません)をディレクトリに集め、そのディレクトリを実行に入れます
PATH
。独自のスクリプトの慣例的な場所はありますが、$HOME/bin
実際にはあなた次第です。これを将来のシェルに入れると、
~/.profile
orを見つけるのと同じ方法でスクリプトを見つけることができます。 (もちろん後者が別名でない限り:-))ls
make
export PATH="$HOME/bin:$PATH"
UnixはWindowsとは異なり、実行可能ファイル拡張子を無視しません。スクリプトが呼び出されたら、それを実行するには
myscript.sh
入力する必要があります。myscript.sh
したがって、名前を次のように変更してくださいmyscript
。ソースコードの最初の行は、それがどのタイプのスクリプトであるかを正確に伝えます。mv myscript.sh myscript
myscript
これで完全に一般的なコマンドなので、他のコマンドと同じように実行できます。すでに実行可能ファイルと同じ名前がある場合は、そのファイルをPATH
最初に指定するので優先されます$HOME/bin
。 (ご希望の場合は一番最後に入れてください。)
答え4
はい、作業ディレクトリに関係なく、名前でスクリプトを呼び出すように設定できます。
スピード
- ディレクトリ内のファイルが実行可能であることを確認してください。
chmod
- バイナリ実行可能ファイルではないスクリプトの場合は、スクリプトが適切なもので始まっていることを確認してください。シェルボーン。
- ファイルが含まれているディレクトリがあることを確認してください
PATH
。- ただし、まず適切なディレクトリであることを確認してください(次のセクションを参照)。
- 簡単なコマンド名でスクリプトにアクセスするには、ファイル拡張子を削除するか、ディレクトリに目的の名前でシンボリックリンクを作成します。
- これは完全にオプションです。
- シンボリックリンクを作成するには:
ln -s origfile linkname
スクリプトを置く場所
では、実行可能ファイルをどのディレクトリに入れる必要がありますか?最終的に、スクリプトがどのようにシステムに表示されるかを決定します。
- あなたがシステム管理者であり、必要な場合みんなスクリプトを実行するには、スクリプトをに配置します
/usr/local/bin
。- このディレクトリはすでに
PATH
多くのシステムにデフォルトで存在します。
- このディレクトリはすでに
- あなただけがアクセスできるようにするには、に入力してください
~/bin
。
別の記事では、実行可能なスクリプトとバイナリをどこに配置する必要があるかについての有用な情報を提供します。Linuxでアイテムをどこに置くかをどうやって知ることができますか?。