web-dev-qa-db-ja.com

パスにバイナリを追加します

実行可能ファイルがあります。他のコマンドのように名前だけでターミナルで実行可能ファイルを実行したい。

実行可能ファイルを/usr/local/binに入れるか、PATH~/.bashrcに追加できます。両方とも機能します。

何が良いですか?違いはありますか?

14

たとえば、実行可能なmyscriptがあるとします。端末から実行する必要があります、

/path/to/myscript

ユーザーレベルの変更

その実行可能ファイルのPATH~/.bashrcに追加すると、どこからでも名前付きでのみ実行可能ファイルを実行できます( Avinash Raj 前述)

myscript

ただし、変更はユーザーレベルで影響を受けます。つまり、他のユーザーがいる場合は、名前だけで実行可能ファイルにアクセスできません。適切な許可がある場合は、実行可能ファイルを次のように実行する必要があります。

/path/to/myscript

また、ルートのPATHにないため、スクリプトをSudoとして実行することはできません。Sudoとして実行するには、使用する必要があります。

Sudo /path/to/myscript

システムレベルの変更

スクリプトを/usr/local/binに配置すると、システム全体およびすべてのユーザーがアクセスできます。その場合、どのユーザーでも実行可能ファイルとして実行できます(適切なアクセス許可がある場合)

myscript

その場合、実行可能ファイルをSudoとして実行することもできます。

Sudo myscript

次に、必要に応じて1つの方法を選択します。

11
souravc

$PATHファイルの~/.bashrc変数にファイルの場所を追加すると、任意の場所からのみ実行できますが、/usr/bin/に配置すると、システム上のすべてのユーザーが実行できます任意の場所からそのファイル。

何故ですか?なぜなら、あなたの~/.bashrcファイルはユーザーとしてしか見えないからです。したがって、行われる変数の変更はすべてユーザーに限定されます。一方、そのファイルを/usr/binに追加すると、すべてのユーザーに対してファイルがそこに残り、誰かが削除しない限り、/usr/bin変数に$PATHが存在するため、すべてのユーザーが実行できますどこからでも。

2
jobin

実行可能ファイルを/usr/binまたは/usr/local/binに配置すると、名前(your-programの代わりに/usr/local/bin/your-program)を指定するだけでそのプログラムを実行できます。

代わりに、プログラムを含むディレクトリを~/.bashrcファイルにPATHに追加すると、そのディレクトリにある実行可能ファイルは、名前を入力するだけで起動できます。

1
Avinash Raj

@souravcの答えを補完するように...

「ユーザーレベルの変更」では、~/.bashrcファイルを編集する代わりに、ディレクトリ$HOME/bin/を作成し、そこにスクリプトを配置するだけです。

ディレクトリはPATH(少なくともUbuntu 12.04以降)に自動的に追加されます。つまり、そのディレクトリ内のすべてのスクリプト/実行可能ファイルを簡単に実行できます。

myscript

ちょうど2セントです。 :)

PS- @souravc answerへのコメントとしてこれを投稿しようとしましたが、十分な評判がありませんでした。 :-(

0
Restless