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.
Antworten:
Mit dem PATH
env
sucht das Programm nach Ihren ausführbaren Dateien. Sie können dies pro Benutzer ändern (in $ HOME / .bashrc). Führennano $HOME/.bashrc
Sie dazu die letzte Zeile aus, fügen Sie eine neue Zeile hinzuUm es auf Systemebene zu
sudo nano /etc/login.defs
ändern, ändern Sie diese Zeilezu
quelle
/etc/environment
. Dort würde ich es eher ändern als in/etc/login.defs
.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
rvm
Wrapper./usr/bin/env ruby
bietet 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
$PATH
Einstellung/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
$PATH
Variable so einstellen , dass sie das Wrapper-Verzeichnis verwendet, das der Ruby-Version zugeordnet ist, die Sie verwenden möchten, zSie haben die RVM-Umgebung so eingestellt, dass
/usr/bin/env ruby_command
sie funktioniert.Zumindest löste dies dieses Problem für mich. Ich hoffe, das hilft jemandem da draußen, etwas Zeit zu sparen.
quelle
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
quelle
Ich habe den gleichen Fehler bekommen
#!/usr/bin/env ruby
oben in meinem Skript führt zuwenn 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.script
aberruby\R filename.script
das führt zu dem Fehler.quelle