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


15

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

私は私の実行可能ファイル内に置くことができる/usr/local/binか、私はそのを追加することができますPATH~/.bashrc。両方とも機能します。

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

回答:


12

たとえば、実行可能ファイルがあるとしますmyscript。ターミナルから実行する必要があります、

/path/to/myscript

ユーザーレベルの変更

PATHその実行可能ファイルをに追加すると~/.bashrc、次のように、どこからでも名前付きでのみ実行可能ファイルを実行できます(既に説明したAvinash Raj)。

myscript

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

/path/to/myscript

また、root ではないため、スクリプトをsudoとして実行することはできません。使用する必要があるときに実行するには、PATHsudo

sudo /path/to/myscript

システムレベルの変更

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

myscript

その場合、次のように実行可能ファイルを実行できますsudo

sudo myscript

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


2

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

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


1

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

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


1
この情報は偽です。「そのディレクトリ」にいなくても実行可能ファイルを起動できます。
Lekensteyn

これはどうですか?、もう少し説明してください。
アビナッシュラジ

1
わかりました、あなたの答えを読むのに苦労しました(そしてそれによってエラーを犯しました)。うまくいけばそれが役立つ。
Lekensteyn

したがって、質問は次のとおりです。違いはありますか?あなたは実質的にOP以外の何も言わなかった。
ラドゥラデアヌ14年

OSの質問に答えましたが、簡単な形式ではありませんでした。
アビナッシュラジ14年

0

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

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

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

myscript

ちょうど私の2セント。:)

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.