web-dev-qa-db-ja.com

PATHに新しいディレクトリを追加するか、すでにPATHにあるディレクトリのシンボリックリンクを追加する

BashからSublime Textを実行できるように設定したところ、異なるチュートリアルでこれを行う2つの方法が見つかりました。

方法1)/usr/local/bin/sublからSublimeのビンdir:へのシンボリックリンクを作成します

Sudo ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl

これは、/usr/local/binがすでにPATH変数にあることを利用しました。

...または...

方法2)Sublimeのbinフォルダーへのパスを含むようにPATHを更新します:

export PATH="/Applications/Sublime Text.app/Contents/SharedSupport/bin/":$PATH

両方とも動作しますが、1つの方法が他の方法よりも優れているのか、それとも同じように問題ないのですか?

私が見ることができる唯一の利点は、方法1の場合です。もしPATHディレクトリのディレクトリを少なくすることが有益である場合(実行可能ファイルを探す速度/パフォーマンス?).

5
sbuck

既にPATHにあるディレクトリにシンボリックリンクを追加することをお勧めします。

ソフトウェアをシステム全体で(他のユーザーが)表示できるようにする場合は、/usr/local/binへのシンボリックリンクを追加します。ソフトウェアを自分だけに表示したい場合は、PATH$HOME/bin/を1回追加します(一部のディストリビューションでは、bashシェルが構成されている場合、そのディレクトリが自動的に追加されます)。そこからシンボリックリンクを追加します。

非常に長いPATHを避ける必要があります(そのため、新しくインストールされたアプリケーションごとにディレクトリを追加しないでください)。どちらもパフォーマンスのためです(ただし、一部のシェルはPATHルックアップをキャッシュしているため、問題にならない場合がありますそれだけ)と保守性の目的で(PATHに多数のディレクトリが含まれていると、混乱を招きます);これはLD_LIBRARY_PATHにも当てはまります($HOME/lib/ ...からのシンボリックリンクを追加することをお勧めします)。

プロセスの一部を自動化する GNU stowの使用を検討することもできます(数年前に使用しようとしましたが、そうではないと感じました)負担に値する)。

最後に、ソースコードからコンパイルする多くのソフトウェアは、/usr/local/およびその/usr/local/bin/ディレクトリの下以外の場所にインストールされるように構成できます。 GNU autoconf 機能で構成された無料ソフトウェアの場合(つまり、configure.ac....から生成されたconfigureスクリプトがある場合)、--prefix=$HOME/pub/ --exec-prefix=$HOME/bin/を渡して、ビルド時の他のいくつかのオプション(例:--program-suffix=-mine、...)。

第3の方法は、wrapシェルスクリプトで実行可能ファイルにすることになりますどのexport- s拡張されたPATHexport PATH=$PATH:/opt/something/binを使用します...(これは、実行可能ファイルがexecvpを介して実行されるより多くの内部プロセスをフォークしている場合に必要です)。ところで、ほとんどのFirefoxインストールはそれを行っています(つまり、firefoxまたはmozillaexec mozilla.bin ....で終わるシェルスクリプトになります)、またはexec- ingフルパス。したがって、$HOME/bin/sublimetextPATH$HOME/bin/alreadyであると想定)として、小さなシェルスクリプトを追加するだけで済みます。

#!/bin/sh
# file $HOME/bin/sublimetext
# if needed add export PATH=$PATH:/Applications/Sublime\ Text.app/Contents/SharedSupport/bin 
exec /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl "$@"

必要に応じて、そのスクリプトに$HOME/bin/sublという名前を付けることもできます。 chmod u+rx $HOME/bin/sublでスクリプトを実行可能にすることを忘れないでください