405 Stimmen

' \r ': Befehl nicht gefunden - .bashrc / .bash_profile

Ich habe Windows, verwende Cygwin und versuche, die JAVA_HOME permanent durch mein .bashrc Datei.

.bashrc:

export PATH="$JAVA_HOME/bin:$PATH"  
export JAVA_HOME=$JAVA_HOME:"/cygdrive/c/Program Files (x86)/Java/jdk1.7.0_05"

.bash_profile:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

Cygwin läuft:

-bash: $'\377\376if': command not found
-bash: $'then\r': command not found
: No such file or directorysu//.bashrc
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: syntax error near unexpected token `fi'
-bash: /cygdrive/c/Users/jhsu//.bash_profile: line 3: `fi'

Ich bin mir nicht sicher, ob ich die Befehle aus einem Tutorial übernommen habe, das für ein anderes System gedacht war, oder ob ich einen Schritt übersehen habe. Oder Leerzeichen führen dazu, dass meine Befehle nicht richtig ausgeführt werden.

Ich habe mir mehrere ähnliche Fragen angesehen, aber ich habe keine gefunden, bei der die Frage genau auf meinen Fehler zutrifft.


Mein Heimweg:

$ echo $HOME
/cygdrive/c/Users/jhsu
$ echo ~
/cygdrive/c/Users/jhsu/

Ich glaube also, dass die Dateien an der richtigen Stelle platziert werden sollten.

461voto

jahroy Punkte 21420

Wenn alles andere in Cygwin versagt...

Versuchen Sie, die dos2unix auf die betreffende Datei.

Das kann helfen, wenn Sie Fehlermeldungen wie diese sehen:

-bash: '\r': command not found

Newline-Zeichen im Windows-Stil können in Cygwin Probleme verursachen.

En dos2unix ändert die Zeilenumbruchszeichen so, dass sie mit Unix/Cygwin kompatibel sind.

VORSICHT! der Befehl dos2unix ändert Dateien an Ort und Stelle treffen Sie also gegebenenfalls Vorsichtsmaßnahmen.

Wenn Sie die Originaldatei behalten wollen, sollten Sie sie zunächst sichern.

Hinweis für Mac-Benutzer: Die dos2unix Befehl gibt es unter Mac OS X nicht.

Vérifiez diese Antwort für eine Vielzahl von Lösungen mit verschiedenen Werkzeugen.


Außerdem gibt es eine unix2dos Befehl, der das Gegenteil bewirkt:

Es modifiziert Unix-Zeilenumbruchzeichen, so dass sie mit Windows-Tools kompatibel sind.

Wenn Sie eine Datei mit Notepad öffnen und alle Zeilen zusammenlaufen, versuchen Sie unix2dos filename .

453voto

Michael P. Bazos Punkte 23805

Für diejenigen, die nicht über dos2unix installiert haben (und nicht installieren wollen):

Nachsatz entfernen \r Zeichen, das diesen Fehler verursacht:

sed -i 's/\r$//' filename

Erläuterung :

Option -i ist für an Ort und Stelle bearbeiten, löschen wir die nachgestellte \r direkt in der Eingabedatei. Achten Sie daher auf die korrekte Eingabe des Musters.

149voto

Ray Oei Punkte 1622

Für Windows (Shell-)Benutzer mit Notepad++ (überprüft mit v6.8.3) können Sie die spezifische Datei mit der Option

  • bearbeiten -> EOL-Konvertierung -> Unix/OSX-Format

Und speichern Sie Ihre Datei erneut.

Bearbeiten: funktioniert immer noch in v7.5.1 (29. August 2017)

Bearbeiten: 3. Januar 2022. Als VSCode wird mehrfach erwähnt. Gehen Sie zu den Einstellungen in VSCode und geben Sie files.eol in das Suchfeld eingeben und auf \n (Unix-Format). Beachten Sie, dass diese Einstellung für Ihren Benutzer oder Arbeitsbereich für alle Dateien geändert wird und möglicherweise nicht Ihren Wünschen entspricht. YMMV.

39voto

DietmarTheMachine Punkte 391

Ich benutze Cygwin und Windows7, der Trick war, die set -o igncr in Ihre .bashrc ein, sondern fügen Sie die gesamte SHELLOPTS in Ihre Umgebungsvariablen unter Windows ein. (Also nichts mit unix / cygwin...) Ich denke, es funktioniert nicht von .bashrc denn "der Drops ist schon gelutscht" wie wir auf Deutsch sagen würden. ;-) Also mein SHELLOPTS sieht so aus

braceexpand:emacs:hashall:histexpand:history:igncr:interactive-comments:monitor

38voto

Alvaro Silvino Punkte 8783

SUBLIME TEXT

Mit Sublime gehen Sie einfach zu

Ansicht - > Zeilenenden -> (auswählen)Unix

Speichern Sie dann die Datei. Das wird dieses Problem beheben.

So einfach ist das!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X