Por que dois-pontos ( :
) foi escolhido como separador de caminho?
Note que eu quero dizer "separador de caminho" e não "separador de diretório". Separador de caminho é o símbolo colocado entre as entradas na PATH
variável de ambiente.
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
^ this symbol
Tudo em computadores e software já foi uma decisão deliberada tomada por alguém em algum lugar. Por exemplo, por que til representa o diretório inicial (e por que hjkl para chaves de direção no vi) . Eu gosto de conhecer os antecedentes desta decisão.
Alguns fatos aleatórios:
Ter dois pontos como separador de caminho significa que o diretório com dois pontos no nome não pode ser adicionado ao caminho.
do POSIX:
Como
<colon>
é um separador nesse contexto, os nomes de diretório que podem ser usados no PATH não devem incluir um<colon>
caractere.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
Parece não ser possível escapar do cólon. @ Random832 da Stack Overflow inspecionou o código-fonte que manipula PATH e não encontrou nenhum mecanismo de escape.
/etc/passwd
(que também contém caminhos nas colunas inicial e shell).%
especialmente em$PATH
.PATH
antes da introdução do Unix versão 7 (em 1979) , mas havia um:
caminho de pesquisa delimitado em 1977. O PWB / Unix (Programmer's Workbench) usou o shell Mashey , escrito por John R. Mashey , que caiu cronologicamente entre a casca de Thompson e a casca de Bourne. … (Continua)p
era o caminho de pesquisa (chamado “a sequência de pesquisa de diretório do Shell para execução de comandos”), com diretórios separados por dois pontos. ………………………………………………………… Curiosidade: enquanto o shell Mashey processava o.profile
arquivo, também permitia especificar um$p
valor inicial no arquivo chamado.path
.Respostas:
Após algumas pesquisas, não tenho uma resposta real, mas pelo menos novas informações a serem acrescentadas a essa conversa, apoiadas por alguns fatos históricos.
Aqui está Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI em um de seus discursos falando sobre o shell, por volta da marca das 19:00 você pode ouvi-lo mencionando por que
e
o alias do editor padrão é nos shells unix, é porque os terminais mais antigos, onde não são tão confortáveis ou fáceis de usar e digitar neles, foram uma experiência desagradável.Ele está mencionando um modelo preciso, o https://en.wikipedia.org/wiki/Teletype_Model_33 neste caso.
Depois de alguma pesquisa ( http://www.pdp8.net/asr33/asr33.shtml ), acho que essa máquina permite que você escolha apenas um conjunto de 64 caracteres, nem mesmo suporte ASCII dos EUA completo, 2 com a potência de 6 caracteres , é uma combinação de 6 bits.
De fato, esta máquina não tem nada a ver com ASCII, o que significa que nem mesmo suporta apenas os primeiros 64 caracteres de um ASCII, mas apenas um conjunto de entradas totalmente independentes e provavelmente não padrão (para a era moderna). .
de http://www.pdp8.net/asr33/asr33.shtml
e isso apenas prova que definitivamente não é US ASCII, considerando que, para suportar letras maiúsculas, você realmente precisa de mais de 6 bits, as letras maiúsculas estão além da marca de 64 caracteres (ou o valor 63 em decimal, se você quiser seguir uma tabela)
Agora sabemos que obtemos 64 caracteres dessa coisa, sem nenhum padrão real para apoiá-los na tabela codificada e também não temos letras minúsculas, apenas letras maiúsculas e símbolos e números.
Graças a este site http://keyboards.jargon-file.org/#ASR33 , posso mostrar o layout de entrada desse teclado
e pressionando SHIFT você também terá
Também há um pouco mais de informações sobre como as conexões físicas que geram os caracteres são codificadas http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (a página também esclarece que o ASR33 e caracteres ASCII são diferentes até o nível de bit).
Eu acho que é interessante notar que não existem
{
ou}
mas apenas(
e)
que significa que, provavelmente, criando subshells foi ok, mas a criação de novos processos foi provavelmente não é tão fácil ou permitidos pelo terminal.No final, não acho que exista uma resposta científica real , provavelmente era um personagem "livre" esperando por um significado especial; uma coisa é certa: os shells e os terminais são mais antigos que o ASCII e pensar em ASCII ou em qualquer tabela codificada como a conhecemos hoje provavelmente não resolverá o mistério.
fonte
:
sinal e o shell stackoverflow.com/questions/3224878/…