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.sh
hat 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/bash
wird das Shebang () gelesen, um zu bestimmen, welche Shell geladen werden soll.
Zuseheneinen Effekt, müssen Sie stattdessen den cd
Befehl 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.