Me incomoda ter usado o Unix na faculdade e agora trabalhando no lado do Windows. Qual é a história por trás dessa decisão? Alguém sabe por que funcionou dessa maneira?
Me incomoda ter usado o Unix na faculdade e agora trabalhando no lado do Windows. Qual é a história por trás dessa decisão? Alguém sabe por que funcionou dessa maneira?
Respostas:
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.com
ou cmd
), você pode usar /
em muitos casos, mas nem sempre; isso depende parcialmente da versão do Windows (por exemplo, cd /windows
funciona 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 .
/
é reconhecido como um separador de diretório pela linha de comando do MS-DOS ou Windows.
/
é aceito na linha de comando? Por exemplo, o que dir /p
faz? 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.)
/
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 : - ; , . /
.
/
(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ê.
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 w
arquivo no diretor dir
.
Referências: