SchOS/etc/schinit/console-shell.job
Nexoniarz 020aa6113c Users and permissions: accounts, login, enforced file permissions, setuid, su, passwd, doas
The kernel now checks owner/group/other on open, create, unlink, rename, exec
and path search; honours set-user-id and set-group-id; restricts kill, mount,
reboot and mknod; keeps supplementary groups; and implements chown. devtmpfs
nodes carry owners and modes that chmod/chown keep. Terminals run login, the
image has root and schos, X starts as the ordinary user.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
2026-10-26 13:16:07 +01:00

30 lines
1.3 KiB
Text

# The interactive shell on /dev/tty1, the first virtual terminal.
Label = os.schos.console-shell
# A login prompt, not a shell: /etc/schos-getty hands the terminal to login,
# which asks who is there and starts their shell. tty6 keeps a root shell
# with no login, for when this part of the system is what is broken.
Program = /bin/sh
Args = sh /etc/schos-getty
RunAtLoad = yes
KeepAlive = yes
# The environment this job's shell starts with. Until schinit grew an
# Environment key, every process on SchOS started with an empty environment --
# the kernel built one and exec threw it away. $TERM is the one that matters
# most: a line editor with no TERM cannot ask terminfo how to move a cursor.
Environment = TERM=linux
Environment = PATH=/bin:/usr/bin
# This job reads the console, so it has to own it: schinit puts every job in
# its own session, and a session with no controlling terminal is not delivered
# terminal input at all. Without this the shell echoes and executes nothing.
ControllingTerminal = yes
StandardIn = /dev/tty1
StandardOut = /dev/tty1
StandardError = /dev/tty1
# Seconds between respawns. Guards against a shell that dies instantly
# defaults to 10. One is enough for a shell someone just exited on purpose.
ThrottleInterval = 1