diff options
Diffstat (limited to 'beagle/debian-rfs/usr/sbin/add-shell')
| -rwxr-xr-x | beagle/debian-rfs/usr/sbin/add-shell | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/beagle/debian-rfs/usr/sbin/add-shell b/beagle/debian-rfs/usr/sbin/add-shell new file mode 100755 index 0000000..f7a4a55 --- /dev/null +++ b/beagle/debian-rfs/usr/sbin/add-shell @@ -0,0 +1,40 @@ +#!/bin/sh -e + +if test $# -eq 0 +then + echo usage: $0 shellname [shellname ...] + 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 + +trap "rm -f $tmpfile" EXIT + +if ! cat $file > $tmpfile +then + cat 1>&2 <<EOF +Either another instance of $0 is running, or it was previously interrupted. +Please examine ${tmpfile} to see if it should be moved onto ${file}. +EOF + exit 1 +fi + +for i +do + if ! grep -q "^${i}$" $tmpfile + then + echo $i >> $tmpfile + fi +done + +chmod --reference=$file $tmpfile +chown --reference=$file $tmpfile + +mv $tmpfile $file + +trap "" EXIT +exit 0 |
