2

bin ディレクトリに gem をインストールすると、zsh と bash の $PATH に自動的に追加されます。rubygems は、bashrc、bash_profile、またはその他のプレシェル スクリプトを変更せずに、どのようにこれを行うのでしょうか?

4

1 に答える 1

3

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. 私$PATHsudo 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

于 2012-06-24T21:17:51.347 に答える