Como faço para me livrar do prefixo Cygwin / cygdrive em todos os caminhos?

36

Estou mudando para o Cygwin a partir do shell bash que acompanha o Git for Windows e encontrando um problema estranho. Alguém pensou que seria uma boa ideia adicionar /cygdrive/todos os caminhos, enquanto eu acho que é uma ideia horrivelmente feia. Consegui determinar que posso corrigir parcialmente isso adicionando

mount --change-cygdrive-prefix /
export HOME=/c/Users/BZISAD0

no meu .bashrc, mas se eu der uma olhada na variável PATH, tudo ainda terá / cygdrive /. Suponho que eu poderia escrever um script para corrigir o PATH, mas isso é ainda mais complicado do que o que já estou fazendo. Tem que haver uma maneira melhor, e estou bastante confiante de que existe desde que o shell do bash do Git usa (AFAIK) uma versão mais antiga do Cygwin, e de alguma forma está configurado para não ser anexado a /cygdrivetodos os lugares. Então, como posso girar o botão "Chupar" para zero?

Gary Larson comic

iconoclasta
fonte

Respostas:

39

Grepping em / etc criou um link que o Google não. Acontece que você pode controlar isso no arquivo /etc/fstab. Basta adicionar uma linha que diz

none / cygdrive binary 0 0

e o problema deve ser corrigido. Não há mais correções do kludgey no .bashrc e nenhum $ PATH bagunçado.

iconoclasta
fonte
2
Eu usei esse método e, agora, quando tento fazer ls /, as unidades do Windows não aparecem. Nem mesmo ao usar ls -l /. Isso é esperado? Pode ser consertado? Isto é o que eu tenho no fstab:none / cygdrive binary,posix=0,user,acl 0 0
Tibi
Eu não sabia que havia uma maneira de obter as unidades do Windows /. Você já teve isso antes? (Ou às /cygdrive/?) Sempre vivi com o fato de que preciso saber quais unidades do Windows estão disponíveis e quase nunca as uso.
iconoclast
11
Sim, ls /cygdrivedeve listar as unidades do Windows. A saída para mim, por exemplo, é c/ e/ f/. Observe como as unidades são tratadas como pastas.
Kat
11
Esta apenas metade funciona. As duas montagens (real /e cygdrive) são meio que sobrepostas. Ou seja: você pode obter nas unidades usando /c, etc. - mas eles nunca são listados como parte de /. Eu acho que o real /está escondendo o conteúdo da cygdrivelista. Eu estou querendo saber se isso é um comportamento tecnicamente indefinido e pode quebrar algo. De qualquer forma, como eu prefiro poder ver qualquer coisa com que estou trabalhando, estou escolhendo /mnt.
Underscore_d
11
@Tibi Eu descobri que se você fizer o cd para / e depois executar o mkdir c (ou qualquer que seja o nome da sua unidade), ele fará com que o ponto de montagem da unidade fique visível para ls, em vez de substituí-lo por um diretório vazio. Quem teria pensado?
precisa saber é o seguinte
10

Método um

mount -c /
mount -m > /etc/fstab

Método dois

echo - / cygdrive acl > /etc/fstab

Exemplo

Steven Penny
fonte
antes e depois de fazer isso (método 1), /consultou o diretório raiz cygwin64 e cd /cnão funcionou. Para fazer o cd /ctrabalho eu tinha que fazer mount c: /c.
MM
/cnunca deve ter trabalhado, a minha solução nunca sugeriu que
Steven Penny
2
Interpreto "como se livrar do / cygdrive nos caminhos" como "permitir que o / c funcione em vez do / cygdrive / c" (e da mesma forma para outras letras). Meu PATH agora mostra / c / bla em vez de / cygdrive / c / bla
MM
11
A partir de 2.9.0 (0.318 / 5/3) 12/09/2017 10:18 x86_64 Cygwin, o método 1 permitirá que o usuário cd /coucd c: . Usar cd /ainda vai para o diretório cygwin64.
Marcel Wilson
1

Sim, a montagem deve funcionar.

mount -c /

Se você ainda tiver entradas PATHmencionadas /cygdrive, provavelmente precisará reiniciar.

Além disso, verifique se há alguma PATHconfiguração /etc/profilemencionada /cygdrive.

Mikel
fonte
Você quer dizer reiniciar o Cygwin ou realmente reiniciar a máquina inteira?
Iconoclasta
Eu acho que você precisa finalizar todos os processos baseados no Cygwin. A maneira mais fácil de fazer isso é reiniciar a máquina.
Mikel
Normalmente, dou preferência às respostas de outras pessoas quando encontro respostas para minhas próprias perguntas, mas como a sua exige uma reinicialização (ou simulação) e como a minha é a encontrada na documentação do cygwin, vou com a minha.
Iconoclast
Se o seu funcionou sem uma reinicialização, então por todos os meios!
Mikel
Mas se eu reiniciar a máquina, essa alteração se foi. Voltar ao que é armazenado no fstab.
Rustyx