Wenn wir über seinen Softlink in ein Verzeichnis cd, beobachte ich:
ls ..
zeigt den Inhalt des übergeordneten Verzeichnisses des verknüpften Verzeichnisses an, währendcd ..
es unter dem übergeordneten Verzeichnis des Softlinks angezeigt wird. Warum sind sie anders?cd ..
gefolgt von tab gibt keine Optionen für die Vervollständigung an, weder für den Inhalt des übergeordneten Verzeichnisses des verknüpften Verzeichnisses noch für den Inhalt des übergeordneten Verzeichnisses des Softlinks. Warum ist es das?Woher wissen wir unter allen Verzeichnisbefehlen, welche in der obigen Situation für das verknüpfte Verzeichnis oder für seinen Softlink funktionieren?
cd
sich dies entsprechend dem "physischen" Ort, an dem es sich befindet (dh dem mit dir verknüpften Verzeichnis), über den-P
Switch verhält . Zumindest ist das bei Bash so.Antworten:
Weil Bash (und möglicherweise andere Muscheln) den Pfad verfolgen, den Sie hinabgestiegen sind, einschließlich Symlinks, damit Ihre Spur wieder nach oben wie die nach unten aussieht.
Bash weiß, wie Sie zum Arbeitsverzeichnis gekommen sind, da
cd
es sich um eine integrierte Shell handeln muss. Wenn Siels ..
die Shell ausführen , kann der "symbolische Pfad" nicht ersetzt werden, da ergrep ..
ebenfalls gültig ist und das Übersetzen..
furchtbar verwirrend wäre.So wie es ist, hat die Shell derzeit zwei Interpretationen, von
..
denen argumentiert werden könnte, dass sie so verwirrend sind, als ob sie nie versucht hätte, überhaupt zu helfen.quelle
..
sollte das übergeordnete Verzeichnis des Verzeichnisses sein, in dem Sie sich befinden (und sollte im Inode des Verzeichnisses gespeichert sein, in dem Sie sich gerade befinden). Es sollte keine Mehrdeutigkeit geben. Ich mag jedoch Bash-Verhalten, da ich häufiger zu dem Verzeichnis zurückkehren möchte, in dem sich der Link befand (abercd -
oft genug, um dies zu tun ... undpushd
/ oderpopd
helfen könnte, wenn wir daran denken, sie zu verwenden). Imo, Standard sollte es sein, zum physischen übergeordneten Verzeichnis zu wechseln, und eine Option, die es ermöglicht, zum Verzeichnis des Links zurückzukehren (dass es aus Kompatibilitätsgründen oder aus anderen klugen Gründen umgekehrt ist?)