After some digging I don't have a real answer but at least new information to add to this conversation supported by some historical facts.
Here is Peter Chubb in one of his speeches talking about the shell, around the 19:00 mark you can hear him mentioning why e
is the alias for the default editor in unix shells. It's because older terminals were not so comfortable or easy to use and typing on them was an unpleasant experience.
He mentions a precise model, the Teletype Model 33 in this case.
After some research I find that this machine only lets you pick in a pool of 64 characters, not even full US ASCII support, 2 to the power of 6 chars, it's a 6 bit combination.
In fact this machine has nothing to do with ASCII at all, meaning that it doesn't even support just the first 64 chars of ASCII, it's just going for a totally unrelated set of inputs and probably not standard (for our modern era) set of characters.
The ASR 33 teletype can print 64 characters which only allowed for
UPPER CASE LETTERS, numbers, and symbols.Source
and this just proves that it's definitely not US ASCII given the fact that to support uppercase letters you really need more than 6 bits, the uppercase letters are beyond the 64 chars mark (or the value 63 in decimal if you want to follow a table)
0 NUL 16 DLE 32 48 0 64 @ 80 P 96 ` 112 p
1 SOH 17 DC1 33 ! 49 1 65 A 81 Q 97 a 113 q
2 STX 18 DC2 34 " 50 2 66 B 82 R 98 b 114 r
3 ETX 19 DC3 35 # 51 3 67 C 83 S 99 c 115 s
4 EOT 20 DC4 36 $ 52 4 68 D 84 T 100 d 116 t
5 ENQ 21 NAK 37 % 53 5 69 E 85 U 101 e 117 u
6 ACK 22 SYN 38 & 54 6 70 F 86 V 102 f 118 v
7 BEL 23 ETB 39 ' 55 7 71 G 87 W 103 g 119 w
8 BS 24 CAN 40 ( 56 8 72 H 88 X 104 h 120 x
9 HT 25 EM 41 ) 57 9 73 I 89 Y 105 i 121 y
10 LF 26 SUB 42 * 58 : 74 J 90 Z 106 j 122 z
11 VT 27 ESC 43 + 59 ; 75 K 91 [ 107 k 123 {
12 FF 28 FS 44 , 60 < 76 L 92 \ 108 l 124 |
13 CR 29 GS 45 - 61 = 77 M 93 ] 109 m 125 }
14 SO 30 RS 46 . 62 > 78 N 94 ^ 110 n 126 ~
15 SI 31 US 47 / 63 ? 79 O 95 _ 111 o 127 DEL
Now we know that we get 64 chars out of this thing, without any real standard to support them in coded table and we also don't have lowercase letters, just uppercase plus symbols and numbers.
Thanks to this website I can show you the input layout of such keyboard

and by pressing SHIFT you also get

There is also a bit more information about how the physical connections that generate the characters are coded (the page also clarifies that ASR33 and ASCII chars are different down to the bit level).
I think it's interesting to note that there are no {
or }
but only (
and )
which means that probably creating subshells was OK but creating new processes was probably not so easy or permitted by the terminal.
In the end I don't think that there is a real scientific answer, it was probably a "free" character waiting for a special meaning; one thing is sure though: shells and terminals are older than ASCII and thinking about ASCII or any coded table as we know them today is probably not going to solve the mystery.
/etc/passwd
(that also contains paths in the home and shell columns). – Stéphane Chazelas Sep 21 '16 at 13:06%
specially in$PATH
. – Stéphane Chazelas Sep 21 '16 at 13:07/bin
overflowed the small (256K), fast fixed-head drive. Thus was/usr/bin
born, and the idea of a search path reinstated.” – Anthony Geoghegan Sep 22 '16 at 09:08$PATH
came with V7 along with the Bourne shell andexecvp()
– Stéphane Chazelas Sep 22 '16 at 09:54/etc/passwd
as stated in your first comment). – Anthony Geoghegan Sep 22 '16 at 10:24PATH
before the introduction of Unix Version 7 (in 1979), but there was a:
-delimited search path as early as 1977. PWB/Unix (Programmer’s Workbench) used the Mashey shell, written by John R. Mashey, which fell chronologically between the Thompson shell and the Bourne shell. … (Cont’d) – G-Man Says 'Reinstate Monica' Sep 22 '16 at 21:50p
was the search path (called “the Shell directory search sequence for command execution”), with directories separated by colons. … … … … … … … … … … … … … … … … … … … … … … … Fun fact: while the Mashey shell processed the.profile
file, it also allowed you to specify an initial$p
value in file called.path
. – G-Man Says 'Reinstate Monica' Sep 22 '16 at 22:00/
(slash) and nul. – G-Man Says 'Reinstate Monica' Sep 24 '16 at 01:22