Pourquoi le côlon (:
) choisi comme séparateur de chemin?
Notez que je veux dire "séparateur de chemin" et non "séparateur de répertoire". Le séparateur de chemin est le symbole placé entre les entrées de la PATH
variable d'environnement.
PATH="/usr/local/sbin:/usr/local/bin:/usr/bin:..."
^ this symbol
Tout dans les ordinateurs et les logiciels était autrefois une décision délibérée prise par quelqu'un quelque part. Par exemple, pourquoi tilde représente le répertoire d'origine (et pourquoi hjkl pour les touches de direction dans vi) . J'aime connaître le contexte de cette décision.
Quelques faits aléatoires:
Le fait d'avoir deux points comme séparateur de chemin signifie que le répertoire avec deux points dans le nom ne peut pas être ajouté au chemin.
de POSIX:
Étant donné qu'il
<colon>
s'agit d'un séparateur dans ce contexte, les noms de répertoire qui pourraient être utilisés dans PATH ne devraient pas inclure de<colon>
caractère.
http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html
Il ne semble pas possible d'échapper au colon. @ Random832 de Stack Overflow a inspecté le code source gérant PATH et n'a trouvé aucun mécanisme d'échappement.
/etc/passwd
(qui contient également des chemins dans les colonnes home et shell).%
spécialement traité$PATH
.PATH
avant l'introduction d' Unix version 7 (en 1979) , mais il y avait un:
chemin de recherche délimité dès 1977. PWB / Unix (Programmer's Workbench) utilisait le shell Mashey , écrit par John R. Mashey , qui se situait chronologiquement entre les obus Thompson et Bourne. … (Suite)p
était le chemin de recherche (appelé «la séquence de recherche de répertoire Shell pour l'exécution des commandes»), avec des répertoires séparés par des deux-points. ………………………………………………………………… Fait amusant: tandis que le shell Mashey traitait le.profile
fichier, il vous permettait également de spécifier une$p
valeur initiale dans le fichier appelé.path
.Réponses:
Après quelques recherches, je n'ai pas de vraie réponse mais au moins de nouvelles informations à ajouter à cette conversation appuyées par des faits historiques.
Voici Peter Chubb https://www.youtube.com/watch?v=Sye3mu-EoTI dans l'un de ses discours parlant de l'obus, vers 19h00, vous pouvez l'entendre dire pourquoi
e
l'alias de l'éditeur par défaut est dans les coques Unix, c'est parce que les terminaux plus anciens n'étaient pas si confortables ou faciles à utiliser et à taper dessus était une expérience désagréable.Il mentionne un modèle précis, le https://en.wikipedia.org/wiki/Teletype_Model_33 dans ce cas.
Après quelques recherches ( http://www.pdp8.net/asr33/asr33.shtml ), je trouve que cette machine ne vous permet de choisir que dans un pool de 64 caractères, pas même le support ASCII US complet, 2 à la puissance de 6 caractères , c'est une combinaison de 6 bits.
En fait, cette machine n'a rien à voir avec ASCII du tout, ce qui signifie qu'elle ne prend même pas en charge uniquement les 64 premiers caractères d'un ASCII, elle va juste pour un jeu d'entrées totalement indépendant et probablement pas un jeu de caractères standard (pour notre ère moderne) .
depuis http://www.pdp8.net/asr33/asr33.shtml
et cela prouve simplement que ce n'est certainement pas US ASCII étant donné que pour prendre en charge les lettres majuscules, vous avez vraiment besoin de plus de 6 bits, les lettres majuscules dépassent la marque de 64 caractères (ou la valeur 63 en décimal si vous souhaitez suivre un tableau)
Maintenant, nous savons que nous obtenons 64 caractères de cette chose, sans véritable standard pour les prendre en charge dans la table codée et nous n'avons pas non plus de lettres minuscules, juste des majuscules plus des symboles et des chiffres.
Grâce à ce site http://keyboards.jargon-file.org/#ASR33 je peux vous montrer la disposition d'entrée d'un tel clavier
et en appuyant sur SHIFT vous obtenez également
Il y a aussi un peu plus d'informations sur la façon dont les connexions physiques qui génèrent les caractères sont codées http://jargon-file.org/jargon-html/html/B/bit-paired-keyboard.html (la page précise également que ASR33 et les caractères ASCII sont différents jusqu'au niveau du bit).
Je pense qu'il est intéressant de noter qu'il n'y a pas
{
ou}
mais seulement(
et)
ce qui signifie que la création de sous-coquilles était probablement correcte, mais la création de nouveaux processus n'était probablement pas si facile ou autorisée par le terminal.Au final je ne pense pas qu'il y ait une vraie réponse scientifique , c'était probablement un personnage "libre" en attente d'une signification particulière; une chose est sûre: les shells et les terminaux sont plus anciens que ASCII et penser à ASCII ou à toute table codée telle que nous les connaissons aujourd'hui ne va probablement pas résoudre le mystère.
la source
:
signe et le shell stackoverflow.com/questions/3224878/…