Por que o Windows usa barras invertidas para caminhos e barras para frente do Unix?

Respostas:

98

O Unix foi introduzido /como separador de diretório em algum momento de 1970. Não sei por que exatamente esse caractere foi escolhido; o sistema ancestral usado por Multics >, mas os designers do Unix já haviam usado >junto com o <redirecionamento no shell (consulte Por que o diretório raiz é indicado por um /sinal? ).

O MS-DOS 2.0 foi introduzido \como separador de diretório no início dos anos 80. O motivo /não foi usado é que o MS-DOS 1.0 (que não suportava diretórios) já estava usando /para introduzir opções de linha de comando. Levou esse uso do /do CP / M , que tirou de VMS . Você pode ler uma explicação mais completa sobre por que essa escolha foi feita no blog de Larry Osterman (o MS-DOS teve uma opção breve de alterar o caractere de opção -e o separador de diretório /, mas não ficou).

/é reconhecido pela maioria das APIs em nível de programador (em todas as versões do DOS e Windows). Portanto, você pode frequentemente, mas nem sempre, se safar do uso /como separador de diretório no Windows. Uma exceção notável é que você não pode usar /como separador o \\?prefixo que (mesmo no Windows 7) é a única maneira de especificar um caminho usando Unicode ou que contenha mais de 260 caracteres.

Alguns elementos da interface do usuário suportam /como um separador de diretório no Windows, mas não todos. Alguns programas passam apenas os nomes de arquivos para a API subjacente, portanto, eles são compatíveis /e \indiferentemente. No interpretador de comandos (em command.comou cmd), você pode usar /em muitos casos, mas nem sempre; isso depende parcialmente da versão do Windows (por exemplo, cd /windowsfunciona no XP e 7, mas não no Windows 9x). A caixa de entrada do caminho do Explorer aceita /(pelo menos a partir do XP; provavelmente porque também aceita URLs). Por outro lado, a caixa de diálogo padrão de abertura de arquivo rejeita barras .

Gilles
fonte
2
/é reconhecido como um separador de diretório pela linha de comando do MS-DOS ou Windows.
Tamara Wijsman
11
"C: \ Windows \ System32> cd / windows / system" funciona.
Andrew J. Brehm
@ TomWij: Você tem uma referência de onde exatamente /é aceito na linha de comando? Por exemplo, o que dir /pfaz? e dir c:/p? e c:/windows/notepad.exe? e start /windows/notepad.exe? etc. (Eu não tenho uma máquina Windows aqui para testar.)
Gilles
2
/provavelmente foi usado como separador de diretório no UNIX porque era uma chave fácil (não deslocada) para encontrar um Teletype. Os caracteres especiais não deslocados eram : - ; , . /.
Daniel R Hicks
2
Curiosamente, recentemente procurei nas fontes e manuais do DOS 1 e 2 e descobri que a Microsoft usava /(e -para comutadores) como o Xenix, e inspirada no Xenix, mas a IBM foi lançada antes que a Microsoft fosse enviada aos OEMs e a IBM usava ` (and / `para comutadores) e alteraram o prompt de A:para A>para que eles alterassem a documentação padrão e enviada com erros (ainda assumindo // -) além de uma observação de que foi alterada e por quê.
mirabilos
9

A API subjacente do Windows pode aceitar a barra invertida ou a barra para separar os componentes de diretório e arquivo de um caminho, mas a convenção da Microsoft é usar uma barra invertida e as APIs que retornam caminhos colocam a barra invertida.

O MS-DOS 2.0 copiou o sistema de arquivos hierárquico do Unix e, portanto, usou a barra, mas (possivelmente por insistência da IBM ) adicionou a barra invertida para permitir que os caminhos fossem digitados no shell de comando, mantendo a compatibilidade com o MS-DOS 1.0 e o CP / M em que a barra era o indicador de opção da linha de comandos.

Comparar

dir/w

que mostra o diretório atual em grande formato contra

dir\w

que executa o warquivo no diretor dir.

Referências:

Tamara Wijsman
fonte