Por que não existe / usr / bin no Windows?

5

Eu sou um usuário de Linux que passa algum tempo no Windows e estou tentando entender alguns dos paradigmas do Windows em vez de combatê-los. Percebo que cada programa instalado da maneira tradicional adiciona os executáveis ​​ao

C:\Program Files

e depois adiciona um atalho ao Desktop / Menu Iniciar contendo o caminho inteiro. No entanto, não existe um diretório comum com links para o software, ou seja, C:\bin\bar.exequal seria o link para

C:\Program Files\foo\bar.exe

Portanto, após a instalação de um aplicativo, a única maneira de usá-lo é através dos menus ou navegando até o executável no sistema de arquivos. Não se pode simplesmente Win-Rabrir o diálogo de execução e digitar barou bar.exe como é possível com notepadou mspaint. Sei que o Windows 8 melhora isso com a horrível Tela Inicial, que suporta digitar o nome do aplicativo, mas, novamente, isso depende do aplicativo ter se registrado para tal.

Eu estaria causando algum dano adicionando C:\Program Filesrecursivamente ao caminho do Windows? Sei que haverá colisões de nomes (por exemplo, uninstall.exe), mas poderia haver outros problemas?

dotancohen
fonte
Note-se que a caixa de busca no menu Iniciar (que lhe permite encontrar um programa digitando seu nome) foi introduzido no Windows Vista, assim que este recurso não é novo no Windows 8.
sleske
1
Ter o aplicativo 'registrado' pelo instalador no menu Iniciar é o mesmo que o aplicativo que cria o link /usr/bin/- ele depende do aplicativo ou instalador.
James Snell
@ JamesSnell: Certo, mas o resultado final do paradigma Linux é um executável que está disponível no caminho global. O resultado final do paradigma do Windows é que é preciso conhecer o caminho completo. Não estou interessado em um diretório específico de links para todos os executáveis ​​em si, mas em ter todos os executáveis ​​executados pelo usuário no caminho, além de entender por que o Windows não possui esse paradigma.
dotancohen
1
Nos dias do DOS, normalmente os programas criavam um subdiretório fora de C: \ e colocavam todos os arquivos, incluindo arquivos temporários, de configuração, dados e executáveis ​​nesse subdiretório. Ainda hoje você encontrará alguns softwares (normalmente programas que existem há muito tempo) que fazem isso (por exemplo, UltraTax). Isso continuou com o Windows 3.11, as janelas 9x e até mesmo através da linha NT para manter a compatibilidade com a linha 9x. Está ficando um IMHO pequenino mais sensato com UAC e permissões padrão agora começando a tentar impor coisas mais sensatas.
21813 LawrenceC
E se houver dois programas chamados bar?
Joel Coehoorn

Respostas:

6

Geralmente não deve haver problemas. No entanto, você precisa prestar atenção em duas coisas:

  • Evite colisões de nomes. Em particular, verifique se os componentes do caminho padrão (como C:\windowsetc.) são os primeiros, para que nenhum utilitário do sistema esteja oculto no caminho.
  • A PATHvariável não pode conter mais que 8191 caracteres . Portanto, se você tiver muitas pastas de programas que deseja adicionar, poderá escolher. Se você assumir um tamanho médio de caminho de 50 caracteres por programa, isso lhe dará espaço para cerca de 160 programas no PATH.

O motivo de isso não ser feito por padrão provavelmente é simplesmente o fato de a linha de comando ser usada relativamente raramente no Windows, portanto nunca houve uma necessidade urgente de ter tudo no caminho. A maioria dos programas que precisam chamar outros programas se adaptou a isso e usa o caminho completo para chamadas.

Finalmente, se você gostaria de trabalhar muito na linha de comando, como no Linux, recomendo que você instale o Cygwin . Ele fornece um ambiente semelhante ao Linux no Windows e permite trabalhar na linha de comando. Ele também mantém sua própria PATHvariável, que você pode personalizar sem afetar outros aplicativos do Windows.

sleske
fonte
Obrigado, atualmente estou usando o Cygwin no mintty para a maioria das coisas. No entanto, Python é uma fera e precisa do original cmd, mesmo com a -ibandeira.
dotancohen
@dotancohen Você pode usar o WSL se estiver executando o Windows 10. Funciona praticamente perfeitamente para o desenvolvimento de python.
Andy Terra
0

A resposta para isso depende do tipo de programa que você está falando. Se você estiver falando de programas que usam bibliotecas compartilhadas (DLLs):

C:\Program Files

é o lugar correto para eles. Você não pode colocar os arquivos desses programas na mesma pasta, porque eles provavelmente terão colisões de nomes . Se você está falando de programas que usam bibliotecas estáticas (sem DLLs):

C:\ProgramData\Bin

é o lugar correto para eles. Isso é semelhante a:

/usr/local/bin

no Linux. Este diretório está disponível através de uma variável de pasta :

ProgramData=C:\ProgramData

Se você precisar obter programas com bibliotecas compartilhadas no seu Path, poderá vinculá-los novamente:

mklink C:\ProgramData\Bin\alfa.exe "C:\Program Files\Alfa\alfa.exe"
Steven Penny
fonte