In dieser Zusammenstellung von Sysadmin-Horrors schreibt einer der Autoren als Faustregel:
Mach immer ein,
cd .
bevor du etwas tust.
Warum willst du das tun?
In dieser Zusammenstellung von Sysadmin-Horrors schreibt einer der Autoren als Faustregel:
Mach immer ein,
cd .
bevor du etwas tust.
Warum willst du das tun?
Antworten:
Das tust du nicht.
Zumindest nicht einfach so. Die vorhergehende Zeile im zitierten Dokument ist von Bedeutung:
pwd
Richten Sie Ihre Eingabeaufforderung so ein, dass bei jeder CD eine neue erstellt wird.- Mach immer ein,
cd .
bevor du etwas tust.
Auf diese Weise überprüfen Sie als Bediener Ihr aktuelles Arbeitsverzeichnis, bevor Sie etwas Wichtiges tun, da es bei jeder Änderung ausgedruckt wird. cd .
macht sonst keinen Sinn.
Diese "Überprüfung" ist eine gute Sache, und Sie sollten eine Form davon anpassen. Eine (IMHO) gemeinsame Variation dieses Themas ist zu immer an der Eingabeaufforderung das Arbeitsverzeichnis ausdrucken.
pwd
vorher etwas tun?
cd .
würde dies den tatsächlichen zugrunde liegenden Wert ändern Verzeichnis, in dem Sie sich befinden.
cd .
aber vor einer anderen Aktion ändert . Dies verringert lediglich die Wahrscheinlichkeit, dass Sie sich im falschen Verzeichnis befinden, löst jedoch nicht das allgemeine Problem. Es sei denn, Sie wechseln in das reale Verzeichnis mit etwas cd $(readlink -f .)
, das Sie tatsächlich dort bleiben möchten.
Wenn das aktuelle Arbeitsverzeichnis Ihrer Shell entfernt wird, können Daten verloren gehen.
Beispielsweise,
$ pwd
/home/user/test
$ rmdir /home/user/test
$ pwd
/home/user/test
$ some_command | tee command.log
tee: command.log: No such file or directory
<long output>
Die Ausgabe von some_command
wurde nicht auf die Festplatte geschrieben.
Die Eingabe cd .
vor dem Ausführen eines Befehls würde das Problem aufdecken.
$ pwd
/home/user/test
$ rmdir /home/user/test
$ cd .
$ pwd
.
Wenn das aktuelle Arbeitsverzeichnis entfernt und neu erstellt wurde, wird durch Eingabe cd .
der Verweis auf dieses Verzeichnis "aktualisiert".
$ ls
foo bar ljz
$ pwd
/home/user/test
$ rmdir /home/user/test
$ mkdir /home/user/test
$ pwd
/home/user/test
$ ls
$ cd .
$ ls
foo bar ljz
Ich denke, es ist wichtiger, Ihr aktuelles Verzeichnis anzuzeigen.
Auf jedem Linux-Server ändere ich die Eingabeaufforderung, /etc/bashrc
indem ich "W" in "w" ändere.
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "
zu
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \w]\\$ "
Die Wirkung davon ist:
[root@xt include]#
gegen
[root@xt /usr/src/spl-0.6.1/include]#
PS1
bash-spezifisch?
~/.profile
oder ~/.bash_profile
sowie die Aktualisierung/etc/skel/.profile