rvm / usr / bin / env: Ruby kein solcher Dateifehler


9

Ich habe rvm + ruby ​​systemweit installiert.

which ruby
/usr/local/rvm/rubies/ruby-2.1.1/bin/ruby

und:

/usr/bin/env: ruby: No such file or directory

Alles andere funktioniert gut, wenn ich den direkten Pfad von Ruby in meine ausführbaren Dateien einfüge, funktioniert das einwandfrei.


Haben Sie "/usr/local/rvm/rubies/ruby-2.1.1/bin" zum "PATH" in "/etc/login.defs" hinzugefügt?
Elliott Frisch

Antworten:


7

Mit dem PATH envsucht das Programm nach Ihren ausführbaren Dateien. Sie können dies pro Benutzer ändern (in $ HOME / .bashrc). Führen nano $HOME/.bashrcSie dazu die letzte Zeile aus, fügen Sie eine neue Zeile hinzu

export PATH=$PATH:/usr/local/rvm/rubies/ruby-2.1.1/bin

Um es auf Systemebene zu sudo nano /etc/login.defsändern, ändern Sie diese Zeile

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

zu

ENV_PATH        PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/rvm/rubies/ruby-2.1.1/bin

Ich erhalte tatsächlich den gleichen Fehler. ENV_PATH hat nicht geholfen. Ich habe es sowohl zu ENV_PATH für normale Benutzer als auch für Superuser hinzugefügt. Ist Login die richtige Datei für Headless Bash?

2
@ SandroDzneladze: In Ubuntu wird die Variable PATH in gesetzt /etc/environment. Dort würde ich es eher ändern als in /etc/login.defs.
Gunnar Hjalmarsson

1
@ GunnarHjalmarsson sieht ja wie ein besserer Ort aus. Aber es behebt das Problem nicht.

Ich habe die Lösung ausprobiert, irgendwie funktioniert sie nicht für Ruby-2.2.2 und Ubuntu 14.04.2 LTS
AMIC MING

1

Mir ist klar, dass dies eine etwas alte Frage ist, aber ich habe einen Tag damit verbracht, dieses Problem zu lösen, und ich habe eine meiner Meinung nach solide Best-Practice-Lösung gefunden - verwenden Sie die rvmWrapper.

/usr/bin/env rubybietet Ihnen die Möglichkeit, die Ruby-Version Ihrer Wahl zu verwenden, sodass Sie die ausführbaren Shell-Skripte (in /bin) nicht mit einem fest codierten Verzeichnispfad bearbeiten müssen , damit sie funktionieren (ich habe dies an anderer Stelle als Lösungsvorschlag angesehen).

Wie in den obigen Antworten erwähnt, ist der Schlüssel die $PATHEinstellung /etc/environment, aber ich habe eine andere Lösung gefunden.

RVM gibt uns ein symbolisches Linkverzeichnis aller installierten Ruby-Versionen und Aliase unter /usr/local/rvm/wrappers/.

Wenn Sie Ihre $PATHVariable so einstellen , dass sie das Wrapper-Verzeichnis verwendet, das der Ruby-Version zugeordnet ist, die Sie verwenden möchten, z

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"

Sie haben die RVM-Umgebung so eingestellt, dass /usr/bin/env ruby_commandsie funktioniert.

Zumindest löste dies dieses Problem für mich. Ich hoffe, das hilft jemandem da draußen, etwas Zeit zu sparen.


Ich habe die Lösung ausprobiert, irgendwie funktioniert sie nicht für Ruby-2.2.2 und Ubuntu 14.04.2 LTS
AMIC MING

Was ist der Fehler? Es gibt einige Installationsprobleme unter Ubuntu mit Ruby 2.2. +: Ryanbigg.com/2014/10/ubuntu-ruby-ruby-install-chruby-and-you Ich verwende immer noch v1.9.3 - freue mich nicht auf ein Upgrade.
Va als

0

Ich habe mich kürzlich mit diesem Problem befasst und einen anderen Ansatz gewählt, also dachte ich daran, es zu teilen. Dies geschieht, wenn die Ruby-Datei in dem genannten Verzeichnis nicht vorhanden ist. Erstellen Sie also einen symbolischen Link zur Ruby-Datei im Verzeichnis, und Ihr Fehler sollte behoben sein.

cd / usr / bin / env

ln -s /usr/local/rvm/rubies/ruby-2.1.1/bin/ruby


4
Hallo Nihanth und dann du für die Antwort! / usr / bin / env ist kein Verzeichnis auf Ubuntu-Computern. Auch Ihrem Link-Befehl fehlt ein Parameter.
Matt Bruzek

0

Ich habe den gleichen Fehler bekommen

#!/usr/bin/env ruby oben in meinem Skript führt zu

rvm /usr/bin/env: ruby no such file error

wenn ich das Skript ausführe.

Meine Lösung war so einfach wie schwer zu finden:

Die Codierung von Zeilenvorschüben in meinem Skript- / Quellcode-Editor wurde auf "Windows-Stil (CR + LF)" eingestellt.

Nach dem Umschalten auf "Unix Style (LF)" und dem erneuten Speichern meines Skripts ist der Fehler behoben.

Es scheint, dass das Carriage Return (CR) -Schild hinter dem "Rubin" zurückgelassen wurde, also gibt es kein, ruby filname.scriptaber ruby\R filename.scriptdas führt zu dem Fehler.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.