mac linux 关于在终端中执行ruby gem 包命令的疑惑?

类似于capsitrano这个包,当你装上后.便可以到终端运行cap命令,
一直很模糊这个命令是怎么就被加到当前环境中了.
当然对于ruby知道他是怎么加到我环境中去的.至于gem我就很模糊,虽然gem env 拿出了gem包的路径,但是没有明确指出这些gem命令的地址.难道有什么机制来执行?

4 个回答

Linux环境下命令的执行和PATH变量有关系

echo $PATH

output:

/home/kit/.scripts:/home/kit/.scripts:/home/kit/.rvm/gems/ruby-1.9.2-p290/bin: /home/kit/.rvm/gems/ruby-1.9.2-p290@global/bin :/home/kit/.rvm/rubies/ruby-1.9.2-p290/bin:/home/kit/.rvm/bin:/usr/local/mysql/bin:/opt/redis:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

注意到PATH变量中包含/home/kit/.rvm/gems/ruby-1.9.2-p290/bin路径
然后执行一下which cap,便了然了

/home/kit/.rvm/gems/ruby-1.9.2-p290/bin/cap

ls /home/kit/.rvm/gems/ruby-1.9.2-p290/bin/,可以发现更多gem包的可执行文件