versuche, ein Bash-Skript in WSL mit CD zu verwenden, aber es passiert nichts

versuche, ein Bash-Skript in WSL mit CD zu verwenden, aber es passiert nichts

Ich habe das folgende Skript nur zum Erlernen des Bash-Skripts in WSL erstellt und es als Desktop.sh in Nano gespeichert

#!/bin/bash 
cd /mnt/c/Users/myusername/Onedrive/Desktop

wenn ich in der Shell bin und bash Desktop.sh eingebe

nichts passiert

Jeder Rat wäre hilfreich, danke

Antwort1

Ihr Skript, das Sie mit dem Befehl aufgerufen haben, bash Desktop.shhat einwandfrei funktioniert, Sie sehen jedoch keinerlei Effekt.

Warum?

Weil das Skript in einer Subshell ausgeführt wird.

Wenn Sie das Skript ausführen bash Desktop.sh, wird eine Subshell gestartet und ein beliebiger Befehl innerhalb der Subshell ausgeführt. Das aktuelle Verzeichnis wird also in der Subshell geändert, und zwar nur in der Subshell. Wenn das Skript stoppt, kehren Sie zu Ihrer Shell zurück, wo sich nichts geändert hat. Dasselbe passiert, wenn Sie das Skript ausführbar gemacht haben. Führen Sie es dann aus, indem Sie seinen Pfadnamen eingeben. In diesem Fall #!/bin/bashwird das Shebang () gelesen, um zu bestimmen, welche Shell geladen werden soll.

Zuseheneinen Effekt, müssen Sie stattdessen den cdBefehl in deraktuellShell. Sie können dies tun, indem SieBeschaffungdas Skript:

source Desktop.sh

oder mit einer Kurznotation:

. Desktop.sh

Nun ist der Effekt so, als ob Sie die Befehle im Skript selbst in die Eingabeaufforderung eingegeben hätten.

verwandte Informationen