I first saw ~ as part of csh. Bill had an adm3a at home (which is why HJKL in vi) but there was a variety of terminals at Berkeley. I assumed ~ was Bill's idea.

    Mary Ann

On 11/18/20 2:25 PM, Clem Cole wrote:
A couple of my friends from UC Berkeley were musing on another email thread.    The question from one of them came up: "I'm teaching the undergrad OS course this semester  ... Mention where ~ comes."

This comment begets a discussion among the 4 of us at where it showed up in the UNIX heritage and it if was taken from somewhere else.

Using the tilde character as a short cut for $HOME was purely a userspace convention and not part of the nami() kernel routine when it came into being.  We know that it was supported by Mike Lesk in UUCP and by Bill Joy in cshell.  The former was first widely released as part of Seventh Edition but was working on V6 before that inside of BTL.  Joy's cshell came out as part of 2BSD (which was V7 based), but he had released "ashell" before that and included it in the original BSD (a.k.a. 1BSD) which was for V6 [what I don't remember is if it supported the convention and I can not easily un-ar(1) the cont.a files in the 1BSD tar image in Warren's archives.

In our exchange, someone observed suggested that Joy might have picked it up because the HOME key was part of the tilde key on the ADM3A, which were popular at UCB [i.e. the reason hjkl are the movement keys on vi is the were embossed on the top of those keys on the ADM3A].  It also was noted that the ASR-33 lacks a ~ key on its keyboard.  But Lesk definitely needed something to represent a remote user's home directory because each system was different, so he was forced to use something.

It was also noted that there was plenty of cross-pollination going on as students and researchers moved from site to site, so it could have been BTL to UCB, vice-versa, or some other path altogether.

So two questions for this august body are:
  1. Where did the ~ as $HOME convention come to UNIX?
  2. Did UNIX create the idiom, or was there an earlier system such as CTSS, TENEX, ITS, MTS, TSS, or the like supported it?