command -pv usa um "valor padrão para PATH".
$ which ruby
/home/mikel/.rvm/rubies/ruby-1.9.3-p484/bin/ruby
$ command -pv ruby
/usr/bin/ruby
Infelizmente, isso não funciona em zsh , então, com base no comentário de Stephane, poderíamos usar getconf PATH :
$ PATH=$(getconf PATH) which ruby
ou use command -v no lugar de which , conforme recomendado em Por que não usar" que "? O que usar então?
$ PATH=$(getconf PATH) command -v ruby
A desvantagem dessas abordagens é que, se o administrador do sistema instalasse uma versão do sistema em /usr/local/bin ou /opt/local/bin , e todos os usuários tivessem isso em PATH (por exemplo, via /etc/profile ou /etc/environment ou semelhante), o acima provavelmente não iria encontrá-lo.
No seu caso específico, sugiro tentar algo específico para Ruby. Veja algumas ideias que podem funcionar:
-
Filtrar versões no diretório pessoal do usuário (e caminhos relativos):
( IFS=: set -f for dir in $PATH; do case $dir/ in "$HOME/"*) ;; /*/) if [ -f "$dir/ruby" ] && [ -x "$dir/ruby" ]; then printf '%s\n' "$dir/ruby" break fi;; esac done ) -
Filtre as versões no diretório rvm
( IFS=: set -f for dir in $PATH; do case $dir/ in "$rvmpath/"*) ;; /*/) if [ -f "$dir/ruby" ] && [ -x "$dir/ruby" ]; then printf '%s\n' "$dir/ruby" break fi;; esac done ) -
Filtre rubis graváveis (último recurso, presume que não está sendo executado como root)
( IFS=: set -f for dir in $PATH; do case $dir/ in /*/) ruby=$dir/ruby if [ -f "$ruby" ] && [ -x "$ruby" ] && [ ! -w "$ruby" ]; then printf '%s\n' "$ruby" break fi;; esac done ) -
Peça
rvm,chruby, etc.( rvm system chruby system command -v ruby )
A última maneira faz com que rvm selecione o Ruby padrão, mas o fazemos em um subshell, para que o Ruby preferido do usuário seja restaurado posteriormente. ( chruby parte não testada.)