頻繁に使用するコマンドラインツールは多数あります。私は通常の方法を使用して、ターミナルを介してそのコマンドの完全なパスまで移動し、./ command-nameしかし、これは面倒で時間です-消費タスク。
「ターミナルを介してどこからでもコマンドを実行する方法」のトピックを調査した結果、環境変数にパスを含めるソリューションになりました(./bashrcを編集して)。
これは正常に機能します。
グローバルに機能するすべてのコマンド(mkdir、ifconfig、cpなど)が「/ bin」ディレクトリに配置されていることもわかりました。
「/ bin」ディレクトリにコマンドの「シンボリックリンク」を含めると、すべてが正常に機能し、端末のどこからでもコマンドを実行できます。
私の質問
/ binディレクトリに直接シンボリックリンクを配置しても安全ですか?これは、シンボリックリンクを配置するときに管理者パスワードを要求されたためです。
/ usr/binディレクトリと比較して/ binにコマンドのシンボリックリンクを配置すると、違いが生じますか?
環境(重要な場合):
Ubuntu 13.10、32ビット。
/bin
や/usr/bin
を台無しにすることは推奨されません。また、そこにシンボリックリンクを配置するためにneedをしません。
あなたが言ったのと同じ問題がありました。スクリプトに移動し、毎回./myscript
のように呼び出すのは面倒です。これが私がしたことです。
独自のbinディレクトリを作成して、そこにスクリプトを配置できます。で作成する
mkdir ~/bin
ここで、PATH環境変数を変更する必要があります。これはデリケートな領域です。 PATH変数を台無しにすると、相対パスでコマンドを実行できなくなります。その場合、ls
は機能しなくなる可能性があります/bin/ls
は引き続き機能します。
ここで表示する内容は、現在実行中のターミナルセッションにのみ影響します。何か問題が発生した場合は、単にログアウトしてください Ctrl+D すべてが以前と同じようになっています。
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games
export PATH=$PATH:~/bin
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/home/madmike/bin
echo
-コマンドは、$ PATHの前後の内容を表示します。 export
を使用すると、環境変数を変更できます。追加のbin-directoryが変数の最後に追加されます。これは、同じ名前のコマンドが複数ある場合、コマンドの優先順位がleastであることを意味します。重要なシステムコマンドをオーバーライドしたくないので、これは良いことです。
変更を永続的にするには、〜/ .bashrcファイルを編集します。
nano ~/.bashrc
export PATH=$PATH:~/bin
をそのファイルの最後に追加します。
これで、すべての新しい端末セッションには、ディレクトリで$ PATH変数が展開されます。
あなたの質問に答える前に、「それがどのように機能するか」を少し説明させてください。
システムには Environment Variables
があります。それらの1つはPATH
変数で、実行可能プログラムとスクリプトが置かれているディレクトリのセットを格納します。 Linuxでは、デフォルトでPATH
がいくつかのディレクトリを保存します。それらの1つは/bin
です。それが、/bin
にある任意のプログラムを実行できる理由です。これを実行するPATH
変数を確認できます:
echo $PATH
PATH
変数のディレクトリの順序はimportantです。最も優先度の高いパス名が最初に指定されます。
今、あなたの質問に答えます:
はい。/bin
でシンボリックリンクを作成しても安全です。もちろん他の実行可能ファイルを書き換えない場合。ただし、/usr/local/bin
を使用することをお勧めします。 PATH
にも含まれている必要があります。
はい、そうです。 PATH
の順序に応じて。たとえば、/bin
と/usr/bin
の両方に同じ名前の異なるファイルのシンボリックリンクを配置し、/usr/bin
より前のPATH
に含まれる/bin
を使用すると、/usr/bin
からのシンボリックリンクが使用されます。
ファイルシステム階層について読むことができます こちら
Ubuntu環境変数について こちら
/ binディレクトリに直接シンボリックリンクを配置しても安全ですか?これは、シンボリックリンクを配置するときに管理者パスワードを要求されたためです。
セキュリティ上のリスクがあります。コマンドがグローバルになるだけでなく、シンボリックリンクも簡単に破損する可能性があるため、/ binディレクトリに独自のシンボリックリンクを配置するのは賢明ではないと思います。 bash PATH環境変数は、より堅牢なソリューションです。
/ usr/binディレクトリと比較して/ binにコマンドのシンボリックリンクを配置すると、違いが生じますか?
いいえ。 Filesystem Hierarchy Standard(FHS) に従っていますが、/ binと/ usr/binには違いがあります。
/bin
シングルユーザーモードで使用できる必要がある必須のコマンドバイナリ。すべてのユーザー(cat、ls、cpなど)./usr/bin
必須ではないコマンドバイナリ(シングルユーザーモードでは不要)。すべてのユーザー向け。
しかし、今日の違いはそれほど重要ではありません。実際、一部のディストリビューション(特にFedora)では、/ binディレクトリがフェードアウトする傾向があります。
NO !!!システムディレクトリに触れないでください。作成したすべてのスクリプトまたはプログラムは、通常/usr/local/bin
および/usr/local/sbin
ディレクトリに配置する必要があります。また、PATHにディレクトリを追加することは、セキュリティ上のリスクがあるため、お勧めできません。
また、superuserプログラムの「s」ディレクトリの違い。