#!/bin/sh -e # Modified from Debian's add-shell to work on OS X if test $# -eq 0 then echo "usage: $0 shellname [shellname ...]" exit 1 fi scriptname=$(basename "$0") if [ "$(id -u)" -ne 0 ]; then echo "${scriptname} must be run as root" exit 1 fi file=/etc/shells # I want this to be GUARANTEED to be on the same filesystem as $file tmpfile=${file}.tmp set -o noclobber # shellcheck disable=SC2064 trap "rm -f $tmpfile" EXIT if ! cat $file > $tmpfile then cat 1>&2 <> "$tmpfile" for i do if ! grep -q "^${i}$" "$tmpfile" then echo "$i" >> "$tmpfile" fi done chmod 0644 $tmpfile chown root:wheel $tmpfile mv $tmpfile $file trap "" EXIT exit 0