bin ディレクトリに gem をインストールすると、zsh と bash の $PATH に自動的に追加されます。rubygems は、bashrc、bash_profile、またはその他のプレシェル スクリプトを変更せずに、どのようにこれを行うのでしょうか?
1 に答える
bin ディレクトリにgem をインストールすると、zsh と bash の $PATH に自動的に追加されます。
この質問$PATH
は、gem のインストール時に操作されているように見えます。そうではありません。むしろ、gem は のどこかに$PATH
インストールされますが、これはかなり一般的です。ruby
または のいずれかをインストールするrubygems
と、gem environment
変数EXECUTABLE DIRECTORY
値 (私のデフォルトは/usr/bin
) が に追加されます ($PATH
まだ存在していない場合)。ただし、 に/usr/bin
あるはずですが$PATH
、これは検証されていない推測であり、この理論を裏付けるドキュメントが見つかりません。
rake
(実行可能ファイルを配布する最初の gem) でのテストで/usr/bin/rake
は、version 0.8.7
からversion 0.9.2.2
. 私$PATH
はsudo gem install rake
コマンドに触れませんでした。
RubyGems はバージョン管理されたシステムであるため、これは理にかなっています。gem のバージョンを自動的に処理し、それ自体$PATH
を変更せず$PATH
に最新のバージョンをシンボリック リンク (または同様の方法 - コピー アンド オーバーライトの場合もあります) します。/usr/bin/
一般的な場所だと思い$PATH
ます。
OPがどのプラットフォームで動作するかわかりません。以下は、少なくとも OS X に関連しています。
gem environment
:
...SNIP...
- EXECUTABLE DIRECTORY: /usr/bin
...SNIP...
- GEM PATHS:
- /Library/Ruby/Gems/1.8
- /Users/simont/.gem/ruby/1.8
- /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
つまり、gem にEXECUTABLE DIRECTORY
バンドルされている実行可能ファイルを配置する場所であり、gem 自体を配置する場所です。を調べれば、ディレクトリを含む同じgemの複数のバージョンを見つけることができると確信していますが、./bin
GEM PATHS
GEM PATHS
/bin
EXECUTABLE DIRECTORY
質問でほのめかされた方法で「手動で」編集すること$PATH
は、プラットフォームに依存し、達成するのがやや困難になります(たとえば、bash
vs zsh
vsスタートアップファイル、 vs vs vs環境変数はすべて非常に大きく異なります)、また(私の謙虚な意見では)少し「失礼」です。tsch
Windows
OS X
Linux
$OTHER_OS