Wie in den anderen Antworten erläutert, haben Sie das Verzeichnis geändert, jedoch nur innerhalb der Sub-Shell, in der das Skript ausgeführt wird . Dies hat keine Auswirkungen auf die übergeordnete Shell.
Eine Lösung besteht darin, Bash-Funktionen anstelle eines Bash-Skripts ( sh
) zu verwenden. indem Sie Ihren Bash-Skriptcode in eine Funktion einfügen. Dadurch wird die Funktion als Befehl verfügbar. Diese Funktion wird dann ohne untergeordneten Prozess ausgeführt, und daher wirkt sich jeder cd
Befehl auf die Aufrufer-Shell aus.
Bash-Funktionen:
Eine Funktion des Bash-Profils besteht darin, benutzerdefinierte Funktionen zu speichern, die im Terminal oder in Bash-Skripten ausgeführt werden können, genauso wie Sie Anwendungen / Befehle ausführen. Dies kann auch als Verknüpfung für lange Befehle verwendet werden.
Um Ihre Funktion effizient zu gestalten, müssen Sie Ihre Funktion am Ende mehrerer Dateien kopieren
/home/user/.bashrc
/home/user/.bash_profile
/root/.bashrc
/root/.bash_profile
Sie können sudo kwrite /home/user/.bashrc /home/user/.bash_profile /root/.bashrc /root/.bash_profile
diese Dateien schnell bearbeiten / erstellen
Wie man :
Kopieren Sie Ihren Bash-Skriptcode in eine neue Funktion am Ende der Profildatei Ihrer Bash und starten Sie Ihr Terminal neu. Anschließend können Sie cdd
die von Ihnen geschriebene Funktion ausführen .
Skriptbeispiel
Verknüpfung zu cd ..
mit erstellencdd
cdd() {
cd ..
}
Es ist eine Abkürzung
ll() {
ls -l -h
}
Es ist eine Abkürzung
lll() {
ls -l -h -a
}