Я создал следующий скрипт только для изучения скрипта bash в wsl, сохраняя его как Desktop.sh в nano
#!/bin/bash
cd /mnt/c/Users/myusername/Onedrive/Desktop
когда я нахожусь в оболочке и набираю bash Desktop.sh
Ничего не произошло
Любой совет был бы полезен.
решение1
Ваш скрипт, который вы вызвали с помощью команды, bash Desktop.sh
отработал отлично, но вы не видите никакого эффекта.
Почему?
Потому что скрипт запускается в подоболочке.
Выполнение скрипта с помощью bash Desktop.sh
запустит подоболочку и выполнит любую команду внутри подоболочки. Таким образом, текущий каталог изменяется в подоболочке и только в подоболочке. Когда скрипт останавливается, вы возвращаетесь в свою оболочку, где ничего не изменилось. То же самое происходит, если вы сделали скрипт исполняемым, а затем запускаете его, введя его путь. В этом случае шебанг ( #!/bin/bash
) считывается, чтобы определить, какую оболочку загружать.
Квидетьэффект, вместо этого вам нужно выполнить cd
команду втекущийshell. Вы можете сделать это с помощьюпоисксценарий:
source Desktop.sh
или с помощью сокращенной записи:
. Desktop.sh
Теперь эффект будет таким же, как если бы вы сами ввели команды в командной строке скрипта.