summaryrefslogtreecommitdiff
path: root/beagle/debian-rfs/usr/sbin/add-shell
diff options
context:
space:
mode:
Diffstat (limited to 'beagle/debian-rfs/usr/sbin/add-shell')
-rwxr-xr-xbeagle/debian-rfs/usr/sbin/add-shell40
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