有没有办法定义从 MacOS 中的特定文件夹执行 bin 的别名?

Is there a way to define an alias that executes a bin from a specific folder in MacOS?

我目前使用的是 Macbook Pro 运行 MacOS Mojave 10.14.3。我最近接触了 ruby 编程,但发现他们的整个 gem 包 management 有点令人困惑。当我 gem install 一个包时,它会将它安装在我的 /usr/local/lib/ruby/gems/2.6.0/bin 文件夹中,如果我想执行 gem 或获取 gem 版本,例如 solargraph gem,我必须输入命令:/usr/local/lib/ruby/gems/2.6.0/bin/solargraph -v。我想知道是否有办法为路径 /usr/local/lib/ruby/gems/2.6.0/bin 定义一个别名,这样我就可以键入类似 gemexec solargraph -v 的内容,从而获得与 /usr/local/lib/ruby/gems/2.6.0/bin/solargraph -v 相同的结果。谢谢你的帮助。顺便说一句,我正在使用 ZSH shell。

您可以使用 Ruby 'install' 二进制文件到位于 /usr/local/lib/ruby/gems/RUBY_VERSION/bin.

的中央 bin 目录

使用gem environment确定你的路径:

gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.7
  - RUBY VERSION: 2.5.3 (2018-10-18 patchlevel 105) [x86_64-darwin18]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /Users/alice/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/2.5.0/bin
  - SPEC CACHE DIRECTORY: /Users/alice/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/2.5.3_1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-18
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/2.5.0
     - /Users/alice/.gem/ruby/2.5.0
     - /usr/local/Cellar/ruby/2.5.3_1/lib/ruby/gems/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/opt/ruby/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin

然后,您可以将 ruby bin 路径添加到您的全局 bin 路径中并获得您想要的 -

PATH="/usr/local/lib/ruby/gems/2.5.0/bin:$PATH"
solargraph -v
0.31.3

最后,要让 zsh 每次打开 shell 时都使用此 PATH,请将此行添加到您的 .zsh_rc 文件中 -

echo PATH="/usr/local/lib/ruby/gems/2.5.0/bin:$PATH" >> ~/.zshrc

您可以创建一个函数来为您执行此操作并将其放入您的 .zshrc 文件中。

function gemexec() {
    /usr/local/lib/ruby/gems/2.6.0/bin/""
}