5

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

Я изменяю каталог на корень моего диска C, и печатаю новое местоположение.

#!/usr/bin/bash 
cd /cygdrive/c
pwd

сохраняется в файле chdir.sh в моей домашней директории. Затем я вызываю ./chdir.sh из командной строки bash. Это приводит к ошибке

: No such file or directorygdrive/c
/cygdrive/c/Documents and Settings/rcotton

У меня определенно есть диск C, и команда cd /cygdrive/c работает, когда я вызываю ее непосредственно из командной строки bash.

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

4 ответа4

7

На тот случай, если вы отредактировали свой скрипт с помощью редактора, который не является частью среды Cygwin (например, что-то вроде «Блокнот *», «WordPad» и т.д.): Конвертируйте ваш скрипт в строки Unix с помощью инструмента «dos2unix» ,

Сам скрипт абсолютно корректен, не нужно никаких / или \ изменений. Сообщение об ошибке

: No such file or directorygdrive/c

заставляет меня думать о проблемах с окончанием строки, начиная с \r \n (окончание строки в Windows). На тот случай, если у вас не установлен 'dos2unix':

tr -d \\r < win.txt > unix.txt

или же

sed -e 's/$/\r/' < unix.txt > win.txt
0

Вы уверены, что в своей команде cd вы используете косую черту, а не обратную? Ваша проблема будет симптомом ошибочного принятия этих двух.

Попробуйте эти варианты, если только одна прямая косая черта производит действительно там и производит эту странную ошибку:

cd //cygdrive//c

или же

cd \\cygdrive\\c
0

Попробуйте #!/usr/bin/bash.exe и посмотрите, если это имеет значение. Либо работает на моей установке Cygwin, но файл на самом деле называется bash.exe.

0

TO: ттарчала (и мистер Коттон)

В cygwin //start1/path_2/stuff/long запускает режим взлома UNC, который рассматривает start1 как SMB-сервер с path_2 . Это не то, что было задумано.

Это иногда будет кусать вас в некоторых сценариях оболочки, которые используются совместно с UNIX, где несколько прямых слешей всегда объединяются в один слэш. В cygwin несколько прямых косых черт объединяются, КРОМЕ, если это начало, то есть режим триггера UNC.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .