Der Fehler:
'\r'
: Befehl nicht gefunden
wird dadurch verursacht, dass die Shell nicht in der Lage ist, Windows-ähnliche CRLF-Zeilenenden zu erkennen ( 0d 0a
), denn es erwartet nur LF
( 0a
).
Git
Wenn Sie Git unter Windows verwenden, stellen Sie sicher, dass Sie die Option ' Kasse im Ist-Zustand ' während der Einrichtung. Stellen Sie dann sicher, dass Sie das Programm ausführen: git config --global core.autocrlf false
so dass Git beim Auschecken oder Übertragen von Textdateien keine Konvertierungen vornimmt.
dos2unix
Wenn Sie Git nicht verwenden, müssen Sie die betroffenen Dateien/Skripte einfach wieder in Unix-ähnliche Zeilenenden (LF) umwandeln, entweder durch:
dos2unix ~/.bashrc
Anmerkung: Die dos2unix
Befehl ist Teil von dos2unix
Paket.
Ex/Vim-Editor + tr
Wenn Sie Vim installiert haben, sollte der folgende Befehl die Dateien korrigieren:
ex +'bufdo! %! tr -d \\r' -scxa ~/.bash*
Nützlicher Alias: alias dos2unix="ex +'bufdo! %! tr -d \\\\r' -scxa"
.
tr
Hier ist die Methode, bei der tr
:
cat ~/.bashrc | tr -d '\r' > ~/.bashrc.fixed && mv -v ~/.bashrc.fixed ~/.bashrc
oder:
tr -d '\r' < filename > new_filename
Anmerkung: Die \r
ist gleichbedeutend mit \015
.
sed
Sie können den folgenden Befehl ausprobieren:
sed -i'.bak' s/\r//g ~/.bash*
recode
Die folgenden Aliasnamen können nützlich sein (sie ersetzen dos2unix
Befehl):
alias unix2dos='recode lat1:ibmpc'
alias dos2unix='recode ibmpc:lat1'
Quelle: Freie Unix-Tools (ssh, bash, usw.) unter Windows .
perl
Die folgenden perl
kann die Datei vom DOS- ins Unix-Format konvertiert werden:
perl -p -i.bak -e 's/\015//g' ~/.bash*
Quelle: Abstreifen der ^M .
tofrodos
Unter Linux, wie z. B. Ubuntu, das nicht standardmäßig mit einer der beiden folgenden Funktionen ausgestattet ist dos2unix
o unix2dos
können Sie Folgendes installieren tofrodos
Paket ( sudo apt-get install tofrodos
), und definieren Sie die folgenden Aliasnamen:
alias dos2unix=’fromdos’
alias unix2dos=’todos’
Verwenden Sie dann die gleiche Syntax wie oben.
Vagrant
Wenn Sie Vagrant VM verwenden und dieses Problem beim Bereitstellungsskript auftritt, versuchen Sie die Einstellung binary
Option zu true
:
# Shell provisioner, see: https://www.vagrantup.com/docs/provisioning/shell.html
config.vm.provision "shell" do |s|
s.binary = true # Replace Windows line endings with Unix line endings.
s.path = "script.sh"
end
Siehe: Windows CRLF-zu-Unix LF-Probleme in Vagrant .