実行可能ファイルがあります。他のコマンドのように名前だけでターミナルで実行可能ファイルを実行したい。
私は私の実行可能ファイル内に置くことができる/usr/local/bin
か、私はそのを追加することができますPATH
し~/.bashrc
。両方とも機能します。
何が良いですか?違いはありますか?
実行可能ファイルがあります。他のコマンドのように名前だけでターミナルで実行可能ファイルを実行したい。
私は私の実行可能ファイル内に置くことができる/usr/local/bin
か、私はそのを追加することができますPATH
し~/.bashrc
。両方とも機能します。
何が良いですか?違いはありますか?
回答:
たとえば、実行可能ファイルがあるとしますmyscript
。ターミナルから実行する必要があります、
/path/to/myscript
ユーザーレベルの変更
PATH
その実行可能ファイルをに追加すると~/.bashrc
、次のように、どこからでも名前付きでのみ実行可能ファイルを実行できます(既に説明したAvinash Raj)。
myscript
ただし、変更はユーザーレベルで影響を受けます。つまり、他のユーザーがいる場合、名前のみで実行可能ファイルにアクセスできません。適切な許可がある場合は、実行可能ファイルを次のように実行する必要があります。
/path/to/myscript
また、root ではないため、スクリプトをsudoとして実行することはできません。使用する必要があるときに実行するには、PATH
sudo
sudo /path/to/myscript
システムレベルの変更
スクリプトを配置する/usr/local/bin
と、システム全体およびすべてのユーザーがアクセスできます。その場合、どのユーザーでも実行可能ファイルとして実行できます(適切なアクセス許可がある場合)
myscript
その場合、次のように実行可能ファイルを実行できますsudo
。
sudo myscript
次に、必要に応じて1つの方法を選択します。
ファイル内の$PATH
変数にファイルの場所を追加~/.bashrc
すると、任意の場所からのみ実行できるようになりますが、ファイルを配置/usr/bin/
すると、システム上のすべてのユーザーが任意の場所からそのファイルを実行できます。
何故ですか?なぜなら、あなたの~/.bashrc
ファイルはユーザーとしてしか見えないからです。したがって、行われる変数の変更はすべてユーザーに限定されます。一方、そのファイルを追加すると/usr/bin
、すべてのユーザーがファイルをそこに残すことができ、誰かがそれを削除しない限り変数に/usr/bin
存在$PATH
するため、すべてのユーザーが任意の場所から実行できます。
/usr/bin
または/usr/local/bin
に実行可能ファイルを配置すると、(your-program
ではなく/usr/local/bin/your-program
)名前を指定するだけでそのプログラムを実行できます。
代わりに、プログラムを含むディレクトリをの~/.bashrc
ファイルに追加すると、そのディレクトリにあるPATH
実行可能ファイルは、名前を入力するだけで起動できます。