
Einige Programme erkennen die Tilde-Verknüpfung in Dateinamen nicht und erwarten vollständige kanonische Pfade, z. B. /home/dave/myfile.txt
statt ~/myfile.txt
.
Gibt es eine Möglichkeit, Bash dazu zu bringen ~
, ~user
bei jeder Verwendung einer Tilde die vollständigen kanonischen Pfade zu ersetzen?
Antwort1
Nun, bei Perl bin ich mir nicht sicher, aber im Bash-Skript können Sie diese Konvertierung mit eval durchführen:
eval dir='~user/somedir'
$dir enthält an dieser Stelle den vollständigen Pfad, also /home/user/somedir.
Antwort2
Wenn Sie einen Befehl in der Bash-Shell ausführen, etwa:
command ~/myfile.txt
Die Shell nimmt zuerst die Erweiterung vor ~
(sofern es nicht in Anführungszeichen steht) und führt dann den Befehl mit dem Ergebnis aus.
Aber es stimmt, einige Programme interpretieren das nicht ~
, zum Beispiel:
$ cat "~/myfile.txt"
~/myfile.txt: No such file or directory
aber stattdessen funktioniert das hier:
nano "~/myfile.txt"
Dieses Verhalten wird jedoch durch die Bash-Erweiterung maskiert.Sie brauchen keine weitere Interpretation.
Vielleicht ist es offensichtlich, aber beachten Sie: Wenn ein Programm Konfigurationsdateien verwendet und darin einige Pfade erwartet, ist es nicht die Aufgabe von Bash, diese zu erweitern.