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の複数のバージョンを見つけることができると確信していますが、./binGEM PATHSGEM PATHS/binEXECUTABLE DIRECTORY
質問でほのめかされた方法で「手動で」編集すること$PATHは、プラットフォームに依存し、達成するのがやや困難になります(たとえば、bashvs zshvsスタートアップファイル、 vs vs vs環境変数はすべて非常に大きく異なります)、また(私の謙虚な意見では)少し「失礼」です。tschWindowsOS XLinux$OTHER_OS