45 lines
907 B
Bash
Executable File
45 lines
907 B
Bash
Executable File
#!/bin/sh
|
|
|
|
set -e -u
|
|
|
|
show_usage () {
|
|
echo "usage: chsh [-s shell]"
|
|
echo "Change the login shell."
|
|
}
|
|
|
|
set_shell () {
|
|
if [ "$1" = login ]; then
|
|
echo "login is not a valid shell"
|
|
exit 1
|
|
fi
|
|
mkdir -p $HOME/.termux
|
|
NEW_SHELL=$PREFIX/bin/$1
|
|
if test -x $NEW_SHELL -a ! -d $NEW_SHELL; then
|
|
ln -f -s $NEW_SHELL $HOME/.termux/shell
|
|
else
|
|
echo "$NEW_SHELL is not an executable file!"
|
|
fi
|
|
}
|
|
|
|
O=`getopt -l help -- hs: "$@"`
|
|
eval set -- "$O"
|
|
while true; do
|
|
case "$1" in
|
|
-h|--help) show_usage; exit 0;;
|
|
-s) set_shell $2; exit 0;;
|
|
--) shift; break;;
|
|
*) echo Error; show_usage; exit 1;;
|
|
esac
|
|
done
|
|
|
|
DEFAULT_SHELL=bash
|
|
if [ ! -x $PREFIX/bin/$DEFAULT_SHELL ]; then DEFAULT_SHELL=ash; fi
|
|
|
|
echo Changing the login shell
|
|
echo Enter the new value, or press ENTER for the default
|
|
printf " Login Shell [$DEFAULT_SHELL]: "
|
|
read shell
|
|
|
|
if [ -z "$shell" ]; then shell=$DEFAULT_SHELL; fi
|
|
set_shell $shell
|