デフォルトの OpenSSL 9.8 (Mac OS X 10.6.8) を入手しましたが、MacPorts ( ) 経由で最新バージョン (1.0.1) をインストールすることにしましたsudo port install openssl
。
これらはコンソール出力ですどれのそしてどこにコマンド:
$ whereis openssl
/usr/bin/openssl
(これはシステムのデフォルトです)
$which openssl
/opt/local/bin/openssl
(これはMacPorts経由でインストールされます)
$ openssl version
OpenSSL 1.0.1c 10 May 2012
(PATH に mac ポートのバージョンがあります)
whereis
とに異なるパスが返されるのはなぜですかwhich
? これは問題ありませんか? 同じ結果を得る方法はありますか?
答え1
のマニュアルページにはwhereis
、次のように明記されています (強調は筆者による):
whereisユーティリティは、標準バイナリディレクトリ指定されたプログラムを検索し、見つかったプログラムのパスを出力します。
検索されるパスは、sysctl(8)ユーティリティによって「user.cs_path」文字列に対して返される文字列です。
それとは対照的に、which
ユーザーのパスのバイナリがどこにあるかを確認するためによく使用されるツールです。
whichユーティリティはコマンド名のリストを受け取り、実行される各実行ファイルのパスを検索します。これらのコマンドが実際に実行されていたら。
これが違いを説明しています。 は/opt/local/bin
システム全体の「標準」パスではないためです。結局のところ、MacPorts は完全にオプションのインストールであり、デフォルトではsysctl
のみが/usr/bin:/bin:/usr/sbin:/sbin
含まれています。user.cs_path
一般に、バイナリを見つけるには、 を使用するのではなく、which
またはを使用します。which -a
whereis
理論的user.cs_path
には、
sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
しかし、それが本当に良い考えであるかどうかは分かりません。