Wie kann ein Pfad mit Leerzeichen in PATH erstellt werden?


7

Ich habe es versucht

Export TASK=$HOME/Ubuntu\ Oneund ExportTASK="$HOME/Ubuntu One"

aber beides funktioniert nicht.


TASKoder PATH? Stellen Sie PATHmit ein TASK? Wenn das so ist, wie?
Mikel

Antworten:


10

Es ist nicht die Definition, mit der Sie Probleme haben, sondern die Verwendung. Sie müssen die Variable in Anführungszeichen setzen, wo immer Sie sie verwenden. Siehe dieses Beispiel:

oli@bert:~/Music$ export B="$HOME/Music/Yeah Yeah Yeahs/"
oli@bert:~/Music$ cd $B
-bash: cd: /home/oli/Music/Yeah: No such file or directory
oli@bert:~/Music$ cd "$B"
oli@bert:~/Music/Yeah Yeah Yeahs$

2

Versuchen

export TASK="$HOME/Ubuntu\ One"

In beiden von Ihnen ausgegebenen Exporten ist das Ergebnis, wenn Sie $ TASK wiederholen

/home/user/Ubuntu One

Dies ist nicht das erwartete Verhalten, denn wenn Sie so etwas schreiben

cp $TASK/file somewhere_else/

Bash wird es erweitern auf

cp /home/user/Ubuntu One/file somewhere_else/

das ist natürlich falsch.

Deshalb müssen wir unseren Pfad in Anführungszeichen setzen und dem Leerzeichen entkommen.


1
Das ist falsch. Hast Du es versucht? Wenn Sie dies tun, sieht cp den Backslash und cp verarbeitet keine Backslashes, die Shell jedoch.
Mikel


0

Dieses unangenehme und ungeschickte Verhalten ist das Ergebnis einer unklugen Wahl im Namen des Verzeichnisses "Ubuntu One". Leider scheint dafür keine Lösung geplant zu sein.

Eine Möglichkeit ist die Verwendung von Dropbox, die ähnliche Funktionen bietet.


0

Anstatt auf Dropbox zurückzugreifen, habe ich einen symbolischen Link erstellt:

ln -s Ubuntu\ One UbuntuOne

In meinem speziellen Fall wollte ich Python-Module aus einem Verzeichnis in meiner Cloud importieren:

ln -s Ubuntu\ One/pythonfiles pythonfiles
export PYTHONPATH="$PYTHONPATH:$HOME/pythonfiles/"

Ich stimme zu, es ist idiotisch, Leerzeichen in Linux-Dateinamen einzufügen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.