Очень простой скрипт bash не работает

Я делаю серию сценариев bash, чтобы удалить из-за необходимости вручную вводить команды навигации в мой терминал cygwin. Он тот, который перемещается в мой каталог xampp/www/:

#!/bin/bash 
cd /cygdrive/c/xampp/htdocs/www

Когда я запускаю его со следующей командой:

$ ./www.bat

Я получаю следующую ошибку:

C:\Users\user>cd /cygdrive/c/xampp/htdocs/www
The system cannot find the path specified.

Что странно, когда я печатаю эту команду вручную, она переходит в нужный каталог без проблем. Моя первая мысль состоит в том, что это проблема с именами дисков для дисков Cygwin, но если это было проблемой, это не получилось бы при ручной печати.

Что дает?

1 ответ

Ошибка, которую вы получаете, - это интерпретатор командной строки Windows. Он вызывается, потому что ваш скрипт имеет расширение .bat. www.sh этого его следует называть www.sh

Однако вы не можете делать то, что хотите, с помощью скрипта: новый процесс будет создан для запуска вашего скрипта, новый процесс будет cd в вашем каталоге, но в конце сценария процесс завершится, и вы вернетесь к процессу вызывающей оболочки, который будет иметь старый текущий каталог. Вам нужно будет указать сценарий из bash (./path/to/www.sh), чтобы он выполнялся в том же процессе, что и вызывающая оболочка, но это было бы излишним для того, что вы хотите. Просто добавьте это в свой .bashrc в своем домашнем каталоге (/home/<user>/.bashrc</user>):

alias www='cd /cygdrive/c/xampp/htdocs/www'

licensed under cc by-sa 3.0 with attribution.