2

У меня странная проблема с Cygwin, который действует непоследовательно между установками, особенно scp. У меня есть c:\cygwin\bin в моем Windows PATH в обоих случаях. Однако когда я запускаю следующую команду из командной строки Windows, я получаю очень разные результаты между двумя установками:

scp /cygdrive/c/something.txt User@server:${HOME}/something.txt

На одной машине он передает файл просто отлично, но на другой машине я получаю сообщение об ошибке:

/cygdrive/c/something.txt: No such file or directory

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

scp /c/something.txt User@server:${HOME}/something.txt

Почему различия? Есть ли что-то, что мне нужно настроить в Cygwin, чтобы это работало с /cygdrive /c?

ОБНОВЛЕНИЕ: Вот кое-что более интересное. Если я сделаю ls /c из командной строки Windows, я получу то, что вы ожидаете, как список всего в C:. Однако, ls /cygdrive/c говорит, что его не существует. Запуск этих команд из cygwin bash приводит к совершенно противоположному поведению.

3 ответа3

3

Правильный способ сделать это - использовать команду mount :

mount --change-cygdrive-prefix /c

или в вашем случае восстановите префикс по умолчанию /cygdrive ...

3

Проблема была в моем приоритете PATH. это было

PATH=%PATH%;C:\cygwin\bin

но это должно было быть

PATH=C:\cygwin\bin;%PATH%

После исправления PATH /cygdrive/c разрешается как положено.

2

Я столкнулся с этой проблемой после того, как я установил Git, добавил его bin в мой PATH, затем установил Cygwin и запустил ssh-host-config, чтобы настроить службу Windows для sshd. Кажется, проблема в том, что способ, с помощью которого ssh-host-config регистрирует службу, заставляет sshd вызывать исполняемый файл gash (или команду scp, или предоставленную ssh), а не Cygwin в процессе установки соединения scp. Чтобы это исправить, я удалил службу, установленную ssh-host-config. Из Cygwin Bash я выполнил cygrunsrv -R sshd . Затем я перерегистрировал сервис с переопределением переменной PATH,

cygrunsrv -I sshd -d "CYGWIN sshd" -p "/usr/sbin/sshd" \
  --env "PATH=/usr/bin:/bin:/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:$PATH" \
  -a "-D" -u <priv_user> -w <password>

где priv_user - это, вероятно, cyg_server. См. Http://cygwin.com/ml/cygwin/2005-05/msg00012.html .

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