So wechseln Sie das Verzeichnis mithilfe eines Skripts

10

Ich habe dieses Skript

#!/bin/bash
cd /home/user/somedir
pwd

Es funktioniert wie erwartet, aber ich möchte, dass dieses Skript mich nach / home / user / somedir transportiert, aber ich bleibe im selben Verzeichnis.

Wie schreibe ich ein Skript, das mich (im Gnome-Terminal) nach / home / user / somedir transportiert?

UAdapter
quelle

Antworten:

13

Sie müssen zu sourceIhrem Skript. Wenn nicht, wird es in einer separaten Subshell ausgeführt, wobei das Arbeitsverzeichnis der Subshell geändert wird, nicht jedoch der Shell, in der Sie es ausführen.

Um es zu beschaffen:

. myfile.sh

oder

source myfile.sh

Sie können mehr lesen hier

danjjl
quelle
Ich wollte nur hinzufügen, dass ... UAdadapter, wenn Sie das Shelll-Skript wie sh myfile.sh oder ./myfile.sh ausführen, würde es wie von Danjil beschrieben ausgeführt. Jede der Optionen von Danjil sollte für Sie funktionieren.
itnet7
3

Verwenden Sie exec basham Ende

Ein Bash-Skript arbeitet in seiner aktuellen Umgebung oder in der seiner untergeordneten Umgebung, jedoch niemals in seiner übergeordneten Umgebung.

Diese Frage wird jedoch häufig gestellt, weil man nach der Ausführung eines Bash-Skripts aus einem anderen Verzeichnis an einer Bash-Eingabeaufforderung in einem bestimmten Verzeichnis belassen werden möchte.

Wenn dies der Fall ist, führen Sie einfach eine untergeordnete Bash-Instanz am Ende des Skripts aus:

#!/bin/bash
cd /home/user/somedir
exec bash
Serge Stroobandt
quelle