Cygwin: Usando programas já instalados no Windows?

5

Acabei de instalar o Cygwin e estou um pouco confuso sobre como ele funciona. Eu vejo que tenho uma pasta "home" em C:\cygwin\home . Eu já instalei e configurei o Mercurial, Vim, Git, etc. na minha máquina Windows usando seus respectivos instaladores. Como eu deixo o Cygwin usar esses programas, e também seus arquivos de configuração (_vimrc, etc.)?

    
por john2x 17.05.2011 / 19:54

3 respostas

3

O Cygwin destina-se principalmente a fornecer um ambiente semelhante ao Linux no topo do Windows. Funciona melhor com programas compilados para o Cygwin. Pode funcionar diretamente com programas nativos do Windows, mas você precisa ter cuidado.

Um recurso do Cygwin é que ele tenta fazer com que o sistema de arquivos do Windows pareça um sistema de arquivos típico do Linux, por exemplo, os programas estão em / usr / bin. Programas Cygwin não se referem à unidade C:, eles se referem a / cygdrive / c. (Alguns programas do Cygwin entendem "C:", mas essa é a exceção.) Enquanto seu diretório pessoal aparece em C: \ cygwin \ home do Windows, ele aparece em / home no Cygwin. Isso significa que passar nomes de caminhos completos entre os programas Cygwin e os programas do Windows pode ser complicado: os programas do Windows não entendem os nomes completos dos caminhos do Cygwin e os programas do Cygwin geralmente não entendem os nomes dos caminhos completos do Windows. Há um utilitário Cygwin, o cygpath, que pode ser traduzido entre o Windows e o Cygwin, mas você precisa inserir esse nível de tradução conforme necessário.

Eu não sei de uma solução geral para o problema de interfacear programas Cygwin com programas do Windows. A melhor solução depende do que você está tentando fazer, de quanto você quer viver no mundo do Linux versus viver no mundo do Windows e nos programas que você precisa usar.

Se você planeja usar o Mercurial, o Vim, o Git etc. na linha de comando do Cygwin, recomendo instalar as versões do Cygwin desses programas. Você pode ter as versões do Windows e do Cygwin no seu sistema, mas é preciso ter cuidado com o seu PATH.

Eu tentei configurar o Windows gvim para usar o shell Cygwin e finalmente desisti. Agora uso o Windows gvim ao abrir arquivos da GUI e do Cygwin vim ao abrir arquivos a partir da linha de comando. Há apenas muitos lugares dentro do Windows Vim, onde as convenções da API do sistema operacional Windows precisam ser adaptadas às convenções do Cygwin de programas externos. Dito isso, é fácil usar os mesmos arquivos de configuração de usuário para ambos. Em um shell bash do Cygwin:

ln -s /cygdrive/c/Documents\ and\ Settings/username/_vimrc ~/.vimrc
ln -s /cygdrive/c/Documents\ and\ Settings/username/vimfiles ~/.vim

Você só precisa garantir que todos esses arquivos tenham finais de linha do Unix e use d2u naqueles que não o fizerem. O Vim do Cygwin (qualquer Unix Vim) espera finais de linha Unix; O Windows Vim aceita finalizações de linha Unix ou DOS.

Eu usei bastante o Cygwin, mas não sou especialista. O acima apenas reflete minhas experiências.

    
por 17.05.2011 / 21:04
2

A maioria dos problemas será resolvida garantindo que esses programas estejam na sua variável de ambiente PATH para o sistema operacional.

Dependendo de qual versão do Windows você tem, isto é:

  1. clique em iniciar
  2. clique com o botão direito em Computador ou Meu computador (ou vá para Configurações do sistema através do Painel de controle)
  3. clique na guia "Avançado" ou em "Configurações avançadas do sistema"
  4. clique em "Variáveis de ambiente"
  5. role até PATH
  6. adicione o caminho da pasta que contém os programas desejados (por exemplo, adicione C: \ vim72; para o início da variável PATH, agora se você digitar "vim" no cygwin, o vim deve executar (ps o ponto-e-vírgula é importante) )
por 17.05.2011 / 20:38
1

Eu escrevi um script para ajudar a corrigir alguns dos problemas irritantes com a interação entre janelas e cygwin (caminhos).

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 &
   }"; 
}

Então eu corro para cada comando que eu quero consertar

makewin vi /cygdrive/c/Program\ Files\ \(x86\)/Vim/vim74/gvim.exe
makewin np /cygdrive/c/Program\ Files\ \(x86\)/Notepad++/notepad++.exe

Cria um alias de função para o comando que eu quero que corrija os problemas do caminho do parâmetro. Isso é adicionado ao meu ~ / .bash_profile

    
por 14.05.2014 / 16:33

Tags