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.

9voto

Faiz Ahmed Punkte 312

Möglicherweise haben Sie Notepad++ für die Erstellung/Aktualisierung dieser Datei verwendet.

EOL(Bearbeiten->EOL-Konvertierung) Die Standardkonvertierung ist Windows.

EOL-Konvertierung in Notepad++ ändern

Edit -> EOL Conversion -> Unix (LF)

3voto

user2548343 Punkte 701

Für die Emacs-Benutzer da draußen:

  1. Öffnen Sie die Datei
  2. M-x set-buffer-file-coding-system
  3. Wählen Sie "unix".

Dadurch werden die neuen Zeichen in der Datei im Unix-Stil aktualisiert. Weitere Informationen zur "Newline Representation" in Emacs finden Sie hier:

http://ergoemacs.org/emacs/emacs_line_ending_char.html

Hinweis: Die obigen Schritte könnten in ein Emacs-Skript umgewandelt werden, wenn man dies lieber von der Kommandozeile aus ausführen möchte.

3voto

israel Punkte 31

Ich hatte das gleiche Problem. Die Lösung: Ich bearbeite die Datei mit dem pspad-Editor, und gebe ihr ein Unix-Format (Menü - Format -> UNIX)

Ich glaube, Sie können dieses Format für Ihre Datei mit vielen anderen Editoren einstellen

2voto

Walk Punkte 1301

Das Problem tritt möglicherweise auf, weil die Datei/das Skript von einem Windows-Rechner erstellt/heruntergeladen wurde. Bitte versuchen Sie, die Datei in das Linux-Format zu konvertieren.

dos2unix ./script_name.sh

o

dos2unix ~/.bashrc

2voto

Evan Donovan Punkte 748

Wenn Sie das vim-Paket auf Ihrer Cygwin-Installation installiert haben, können Sie vim verwenden, um dies ohne Suchen & Ersetzen zu beheben. Starten Sie vim wie folgt: vim filename.sh (oft ist es auch ein Alias für vi). Geben Sie dann :set fileformat=unix entonces :wq (write & quit), um Ihre Änderungen zu speichern. (Die : versetzt Sie in den Bearbeitungsmodus von vim).

Ich empfehle dies gegenüber dos2unix, da vim wahrscheinlich häufiger installiert ist.

Es ist jedoch wahrscheinlich die beste Praxis, Ihren Texteditor so einzustellen, dass Dateien, die Sie in einer Unix/Linux-Umgebung verwenden wollen, in einem Unix-Textformat gespeichert werden. Die oben gegebenen Antworten für Notepad++ sind ein gutes Beispiel.

Zusätzlicher Hinweis: Wenn Sie sich nicht sicher sind, welcher Typ eine Datei ist (DOS oder Unix), können Sie die Funktion file filename.sh . Dies kann vor allem bei der Fehlersuche bei obskuren Problemen helfen (z. B. bei Codierungsproblemen beim Import von SQL-Dumps, die von Windows stammen).

Weitere Optionen zur Änderung der Formatierung von Textdateien finden Sie unter diesen Artikel der IU-Wissensdatenbank

Weitere Hintergrundinformationen zu Bash-Skripten und Zeilenenden finden Sie unter diese StackOverflow-Frage .

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