J'ai installé rvm + Ruby dans tout le système.
which Ruby
/usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby
et:
/usr/bin/env: Ruby: No such file or directory
Tout le reste fonctionne bien, mettre le chemin direct de Ruby dans mes exécutables fonctionne bien.
Le PATH est ce que le programme env
utilise pour rechercher vos exécutables. Vous pouvez changer ceci par utilisateur (dans le $ HOME/.bashrc). Pour ce faire, lancez nano $HOME/.bashrc
et allez à la dernière ligne, ajoutez une nouvelle ligne
export PATH=$PATH:/usr/local/rvm/rubies/Ruby-2.1.1/bin
Pour le changer au niveau du système, vous devez Sudo nano /etc/login.defs
et changer cette ligne.
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
à
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/rubies/Ruby-2.1.1/bin
Je me rends compte que cette question est un peu ancienne, mais j'ai passé une journée à essayer de résoudre ce problème, et j’ai trouvé ce que je pense être un type de solution solide basé sur les meilleures pratiques - utilisez les wrappers rvm
.
/usr/bin/env Ruby
vous donne la possibilité d’utiliser la version Ruby de votre choix afin de ne pas avoir à éditer les scripts exécutables du shell (en /bin
) avec un chemin de répertoire codé en dur pour les faire fonctionner ceci comme solution suggérée ailleurs).
Comme indiqué dans les réponses ci-dessus, la clé est le paramètre $PATH
dans /etc/environment
, mais j’ai proposé une solution différente.
RVM nous donne un répertoire de liens symboliques de toutes les versions et alias Ruby installés à /usr/local/rvm/wrappers/
.
Si vous définissez votre $PATH
var pour qu'il utilise le répertoire wrapper associé à la version Ruby que vous souhaitez utiliser, par exemple.
PATH="/usr/local/rvm/wrappers/Ruby-1.9.3-p547:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
Vous aurez défini l’environnement RVM de sorte que /usr/bin/env Ruby_command
fonctionne.
Au moins, cela a résolu ce problème pour moi. J'espère que cela aide quelqu'un à gagner du temps.
J'ai récemment fait face à ce problème et pris une approche différente, donc pensé à le partager. Cela se produit lorsque le fichier Ruby n'est pas présent dans le répertoire mentionné. Créez donc un lien symbolique vers le fichier Ruby dans le répertoire et votre erreur devrait être corrigée.
cd/usr/bin/env
ln -s /usr/local/rvm/rubies/Ruby-2.1.1/bin/Ruby
J'ai eu la même erreur
#!/usr/bin/env Ruby
en haut de mon script mène à
rvm /usr/bin/env: Ruby no such file error
si j'exécute le script.
Ma solution était aussi simple que difficile à trouver:
Le codage des sauts de ligne dans mon éditeur de script/code source a été défini sur "style Windows (CR + LF)".
Après avoir basculé sur "style unix (LF)" et sauvegardé à nouveau mon script, l'erreur a disparu.
Il semble que le signe de retour de chariot (CR) ait été laissé derrière le "Ruby". Il n'y a donc pas de Ruby filname.script
mais de Ruby\R filename.script
, ce qui entraîne l'erreur.