Я только что установил Cygwin, и я немного озадачен тем, как он работает. Я вижу, что у меня есть "домашняя" папка в C:\cygwin\home
. Я уже установил и настроил Mercurial, Vim, Git и т.д. На моем компьютере с Windows, используя соответствующие установщики. Как я могу позволить Cygwin использовать эти программы, а также их конфигурационные файлы (_vimrc и т.д.)?
3 ответа
Cygwin предназначен в первую очередь для обеспечения Linux-подобной среды поверх Windows. Лучше всего работает с программами, скомпилированными для Cygwin. Он может работать напрямую с родными программами Windows, но вы должны быть осторожны.
Одна из особенностей Cygwin заключается в том, что он пытается сделать файловую систему Windows похожей на типичную файловую систему Linux, например, программы находятся в каталоге /usr /bin. Программы Cygwin не ссылаются на диск C: они ссылаются на /cygdrive /c. (Некоторые программы Cygwin понимают «C:», но это исключение.) Хотя ваш домашний каталог находится в папке C:\cygwin\home из Windows, он отображается в каталоге /home из Cygwin. Это означает, что передача полных путей между программами Cygwin и программами Windows может быть непростой задачей: программы Windows не понимают полные пути Cygwin, а программы Cygwin обычно не понимают полные пути Windows. Есть утилита Cygwin, cygpath, которая может транслировать пути Windows и Cygwin, но вы должны сами вставить этот уровень перевода по мере необходимости.
Я не знаю общего решения проблемы взаимодействия программ Cygwin с программами Windows. Лучшее решение зависит от того, что вы пытаетесь сделать, от того, сколько вы хотите жить в мире Linux или от мира Windows, и от программ, которые вам нужно использовать.
Если вы планируете использовать Mercurial, Vim, Git и т.д. Из командной строки Cygwin, я бы порекомендовал установить версии этих программ для Cygwin. В вашей системе могут быть версии для Windows и Cygwin, но вы должны быть осторожны со своим PATH.
Я попытался настроить Windows gvim для использования оболочки Cygwin и, наконец, сдался. Теперь я использую Windows gvim при открытии файлов из графического интерфейса и Cygwin vim при открытии файлов из командной строки. В Windows Vim слишком много мест, где соглашения API-интерфейса ОС Windows должны соответствовать соглашениям Cygwin о внешних программах. Тем не менее, использовать одни и те же файлы конфигурации пользователя для обоих легко. В оболочке Cygwin Bash:
ln -s /cygdrive/c/Documents\ and\ Settings/username/_vimrc ~/.vimrc
ln -s /cygdrive/c/Documents\ and\ Settings/username/vimfiles ~/.vim
Вам просто нужно убедиться, что все эти файлы имеют окончания строки Unix и использовать d2u
для тех, которые этого не делают. Cygwin's Vim (любой Unix Vim) ожидает окончания строки Unix; Windows Vim допускает окончания строк Unix или DOS.
Я немного использовал Cygwin, но я не эксперт. Вышеуказанное просто отражает мой опыт.
Большинство проблем будет решено, если убедиться, что эти программы находятся в переменной среды PATH для операционной системы.
В зависимости от того, какая у вас версия Windows, это:
- нажмите начать
- щелкните правой кнопкой мыши Компьютер или Мой компьютер (или перейдите в Настройки системы через Панель управления)
- нажмите вкладку "Дополнительно" или "Дополнительные параметры системы"
- нажмите "Переменные среды"
- выделите путь
- добавьте путь к папке, содержащей любые программы, которые вы хотите (например, добавьте C:\vim72; в начало вашей переменной PATH, теперь, если вы введете "vim" в cygwin, vim должен выполнить (ps точка с запятой важна))
Я написал скрипт, который поможет исправить некоторые раздражающие проблемы с взаимодействием окон и cygwin (путей).
makewin() {
eval "function $1 {
# Don't taint locals
local FN
declare -a FN
local x
# For each option
for x in \"\${@}\"
do
# Fix the path to "windows"
FN[\"\${#FN[*]}\"]=\`cygpath -w \"\$x\"|sed 's/ /\\\\ /g'\`
done
# Run the Command
\"$2\" \"\${FN[@]}\" >/dev/null 2>/dev/null &
}";
}
Затем я запускаю его для каждой команды, которую хочу исправить
makewin vi /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe
makewin np /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe
Он создает псевдоним функции для команды, которую я хочу, которая устраняет проблемы пути к параметрам. Это добавлено в мой ~/.bash_profile