Frage

Bei der Beschaffung einer Ihrer Env -Datei (eine Reihe variabler Exportieren) treten einige Probleme auf

zum Beispiel:

...
export MY_ROOT=/Soft/dev/blah/blah
export MY_BIN=${MY_ROOT}/bin
...

führt in

$. my_env.sh
$echo $MY_BIN
/bint/dev/blah/blah

=> "/bin" scheint den Beginn der Variablen zu überschreiben, anstatt sie zu erfassen.

Irgendeine Idee?

Übrigens, wenn wir diese Datei beziehen, wird eine Fehlermeldung gemeldet:

": Command not found"

Was seltsam ist. Diese Nachricht erscheint, obwohl wir seinen gesamten Inhalt kommentieren.

Die angerufene Hülle zu Beginn scheint gut zu sein #!/bin/sh, oder #!/bin/bash.

Was ist mit Kontrollfiguren? Wie schießt ich sie unter Linux?

War es hilfreich?

Lösung

Dadurch werden die Zeilenende in der Datei festgelegt:

dos2unix my_env.sh

In einer Datei, die erst ohnehin in der aktuellen Shell ausgeführt wird, ist kein Schebang in einer Datei erforderlich. Als Kommentar könnte es jedoch für menschliche Leser informativ sein.

Andere Tipps

": Befehl nicht gefunden" ist der Fehler, den ich gesehen habe, wenn ein UNIX/Linux-Shell-Skript (falsch) von einem MS-Windows-System behandelt wurde. Wenn es beispielsweise mit einem WebCVs ausgecheckt wurde, mit Notepad oder WordPad geändert und dann erneut eingereicht wurde.

(Es wird beschwert, dass es die ausführbare [Strg-M] nicht finden kann-ein perfekt gültiger, aber äußerst unpraktischer und etwas verdächtiger Dateiname für UNIX/Linux).

Führen Sie die Datei über GNU aus cat -A oder der od -x oder hexdump Befehle, um diese zu sehen (und meine Diagnose zu überprüfen ... oder durchzuführen tr -d Mit dem entsprechenden Zitat und der Shell -wörtlichen Handhabung für Ihr System. (Zum Beispiel tr -d '[Ctrl-V],[Ctrl-M]' unter Bash auf einem typischen Linux -System).

Abhängig von Ihrer Version von tr Möglicherweise können Sie verwenden: tr -d '\r' oder tr -d \015 (015 ist das Oktal für CR, "Wagenrückgabe" oder ^m --- ms-dos, mit dem CR/LF-Paare als Linienabschluss verwendet werden. Wenn es um Interoperabilität geht. Zeilenterminatoren einzelner Zeichen verursachen für andere keine wirklichen Probleme ... aber Paare verursachen echte Konvertierungsprobleme, wenn alles andere in der Geschichte des Mainstream -Computers einzelne Zeichen dafür verwendet hat).

Oh ja, vim hat eine Handy set ff (AKA set fileformat Möglichkeit vim Unabhängig davon, auf welcher Plattform Sie auf welcher Plattform sind. Ich erinnere mich an die vim Der Standardwert besteht darin, zu erkennen, welche Arten von Zeilenbeendigung eine Datei verwendet, und lassen Sie sie unverändert (und natürlich für die native Ihrer Plattform für neue Dateien).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top