Hallo zusammen, unter Windows mache ich mir manchmal batch-files um in der Kommandozeile schnell in ein anderes langes Verzeichnis zu wechseln. also z.B. x.bat darin steht cd c:/Tools/bla/blub/irgendwo Wenn ich die Batch-Datei laufen lasse, bin ich hinterher im richtigen Verzeichnis. Wenn ich das selbe mit einem Shell-Script unter Linux mache, bin ich hinterher immer noch im gleichen Verzeichnis. Wie macht man so was unter Linux?
Statt das Script auszuführen musst du es "sourcen". Also einfach "source <scriptname>" in der bash eintippen. Gruß Marius
Du musst das Skript mit vorangestelltem Punkt aufrufen. Z.B.: . foo.sh Für so einen Fall bietet es sich aber auch an ein Alias zu verwenden (Befehl alias)
Marc schrieb: > Wenn ich das selbe mit einem Shell-Script unter Linux mache, bin ich > hinterher immer noch im gleichen Verzeichnis. > > Wie macht man so was unter Linux? nicht so, wie unter Windows...;-) Hintergrund, warum es nicht geht: wenn du ein Shell(!)-Script ausführst, wird eine neue Shell gestartet, in der die Befehle des Scripts ausgeführt werden und die sich danach dann schließt. Definier dir einen Alias (https://wiki.ubuntuusers.de/alias/).
'autojump' macht auf den ersten Blick einen guten Eindruck, aber bis ich das installiert habe, bin ich wohl ein Weil unterwegs. Die Aliase funktionieren gut. Ich werde die verwenden. Vielen Dank für eure Hilfe :-)
Weitere einfache Möglichkeiten: Symbolische Links zu den Zielverzeichnissen im Heimverzeichnis anlegen und cd in diese. Das cd funktioniert dann aber nur im Heimverzeichnis (aber mit cd ohne Verzeichnisnamen kommt man leicht dorthin). Mit "shopt -s cdable_vars" diese Option aktivieren und die Verzeichnispfade in Variablen ablegen. Mit "cd Variablenname" kommt man dann ins entsprechende Verzeichnis.
Ich würde auch den Weg über aliases gehen. Aber hier noch eine weitere Möglichkeit zur Info, die bei vielen in Vergessenheit geraten ist: Mit der Environment-Variablen CDPATH kann man Suchpfade für cd einstellen. Beispiel:
1 | export CDPATH=.:.. |
sucht erst im aktuellen Pfad, anschließend im übergeordneten. Damit kann man ganz leicht "um die Ecke" springen, ohne "../" erst eingeben zu müssen. Beispiel:
1 | $ cd /usr |
2 | $ cd bin |
3 | /usr/bin |
4 | $ cd games |
5 | /usr/games |
6 | $ cd include |
7 | /usr/include |
cd gibt dann den neuen Pfad automatisch aus, wenn das Verzeichnis über den CDPATH gefunden wurde. Lustig wirds dann mit absoluten Pfadangaben:
1 | export CDPATH=.:..:/usr/local |
2 | $ cd / |
3 | $ cd share |
4 | /usr/local/share |
5 | $ cd /lib |
6 | $ cd games |
7 | /usr/local/games |
:
Bearbeitet durch Moderator
Frank M. schrieb: > Mit der Environment-Variablen CDPATH kann man > Suchpfade für cd einstellen. > > Beispiel: export CDPATH=.:.. Nein, nein, NEIN!! CDPATH soll man niemals exportieren. Die Chancen stehen gut, dass man dadurch ein unaufmerksam geschriebenes Skript ins Schleudern bringt, wenn man es aufruft. Das Skript könnte ja cd mit relativen Pfaden verwenden und zufällig ein Directory erwischen, das über CDPATH erreichbar ist. Man setzt CDPATH in .bashrc oder .profile, aber exportiert nicht!
Welche Distribution verwendest du, dass sich autojump nicht übers Standardrepository installieren lässt?
Statt autojump hätte ich noch sd im angebot: https://github.com/rylnd/sd Das macht in etwa das selbe, allerdings direkt in deiner shell
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.