def _InitDefaults(self): # For some reason this is one of few variables EXPORTED. bash and dash # both do it. (e.g. env -i -- dash -c env) ExportGlobalString(self, 'PWD', posix.getcwd()) # Default value; user may unset it. # $ echo -n "$IFS" | python -c 'import sys;print repr(sys.stdin.read())' # ' \t\n' SetGlobalString(self, 'IFS', split.DEFAULT_IFS) # NOTE: Should we put these in a namespace for Oil? SetGlobalString(self, 'UID', str(posix.getuid())) SetGlobalString(self, 'EUID', str(posix.geteuid())) SetGlobalString(self, 'HOSTNAME', str(libc.gethostname())) # In bash, this looks like 'linux-gnu', 'linux-musl', etc. Scripts test # for 'darwin' and 'freebsd' too. They generally don't like at 'gnu' or # 'musl'. We don't have that info, so just make it 'linux'. SetGlobalString(self, 'OSTYPE', str(posix.uname()[0].lower())) # For getopts builtin SetGlobalString(self, 'OPTIND', '1') # For xtrace SetGlobalString(self, 'PS4', '+ ') # bash-completion uses this. Value copied from bash. It doesn't integrate # with 'readline' yet. SetGlobalString(self, 'COMP_WORDBREAKS', _READLINE_DELIMS)
def GetMyHomeDir(): # type: () -> Optional[str] """Get the user's home directory from the /etc/pyos. Used by $HOME initialization in osh/state.py. Tilde expansion and readline initialization use mem.GetValue('HOME'). """ uid = posix.getuid() try: e = pwd.getpwuid(uid) except KeyError: return None return e.pw_dir