[Toybox] Tilde expansion test on android?

Rob Landley rob at landley.net
Wed Jan 8 15:36:25 PST 2020


Hello from Tokyo.

I'm shoveling my way through shell variable expansion, and I've implemented 3 of
the 8 types so far (tilde expansion, bracket expansion, and quote removal), and
I'm adding tests/sh.test entries for each, and I've come to this one:

  echo {~,~root}/pwd

And I'm going... ok, I can get away with just saying ~ and comparing it with
$HOME (which I did in the previous two tests), but if I want an actual username,
the only one guaranteed-ish to be on the system is "root". But though root's
home directory has been "/root" on every Linux distro I've used for the past
decade, it's not actually _required_ by anything?

No, posix doesn't require a root user to exist, because Microsoft and IBM
sabotaged it. Back during the cold war, the US federal government required Unix,
C, and Posix compatibility for all its systems in Federal Information and
Processing Standard 151 (http://www.opengroup.org/testing/fips/) meaning even
Apple came out with Unix for the Mac (https://youtu.be/nwrTTXOg-KI) and thus
having certified posix compatibility was _required_ to get big lucrative
government contracts... so Microsoft and IBM got seats on the Posix committe and
sabotaged it as much as possible to so they could declare NT and S/360 posix
compatibile via half-assed "compatibility layers"
(https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem) even though NT didn't
have the concept of more than one user (which is why your word processor was
allowed to format the hard drive).

Anyway, Android _also_ doesn't have user accounts, because they used the UID
mechanism to separate apps (each app running as a different UID) back before
thhey started spraying the system down with SELinux everywhere. (Because Android
shipped in 2007 and container infrastructure didn't start seriously going into
the kernel until around 2010, and was properly _usable_ about 5 years after that.)

Anyway, tl;dr: ~root isn't guaranteed to expand to /root but nothing _else_ is
likely to consistently expand to anything, and I wanna write tilde expansion
tests. Suggestions?

Rob



More information about the Toybox mailing list