mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-27 19:53:36 +08:00
49 lines
840 B
Bash
Executable File
49 lines
840 B
Bash
Executable File
#!/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 [[ $UID -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
|
|
|
|
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 0644 $tmpfile
|
|
chown root:wheel $tmpfile
|
|
|
|
mv $tmpfile $file
|
|
|
|
trap "" EXIT
|
|
exit 0
|