original-tsu
This commit is contained in:
parent
8ae61af54a
commit
a07c0a4563
1 changed files with 82 additions and 0 deletions
82
tsu
Executable file
82
tsu
Executable file
|
@ -0,0 +1,82 @@
|
|||
#!/data/data/com.termux/files/usr/bin/sh
|
||||
|
||||
# tsu
|
||||
|
||||
show_usage() {
|
||||
echo 'tsu - a wrapper for su for Termux'
|
||||
echo
|
||||
echo 'Usage: tsu [-e|-p|-s <shell>]'
|
||||
echo
|
||||
echo '-s [</path/to/shell>]'
|
||||
echo ' Use an alternate specified shell. `//usr` is expanded to $PREFIX.'
|
||||
echo '-p'
|
||||
echo ' Prepend /system/bin and /system/xbin to PATH.'
|
||||
echo '-e'
|
||||
echo ' Setup up some enviroment variables as when in Termux.'
|
||||
}
|
||||
|
||||
# parse the options
|
||||
# TODO: validate command line arguments
|
||||
while getopts ':ehps:' opt ; do
|
||||
case $opt in
|
||||
e)
|
||||
SETUP_ENV=1
|
||||
;;
|
||||
|
||||
s)
|
||||
USER_SHELL=$OPTARG
|
||||
;;
|
||||
h)
|
||||
show_usage
|
||||
exit
|
||||
;;
|
||||
p)
|
||||
PREPEND_SYSTEM_PATH=1
|
||||
;;
|
||||
esac
|
||||
done;
|
||||
|
||||
# prefix check
|
||||
test -z "$PREFIX" && PREFIX=/data/data/com.termux/files/usr
|
||||
|
||||
# prepend path
|
||||
if test -n "$PREPEND_SYSTEM_PATH"; then
|
||||
PATH="/system/bin:/system/xbin:$PATH"
|
||||
fi
|
||||
|
||||
# export environment variables.
|
||||
if test -n "$SETUP_ENV"; then
|
||||
export HOME=/data/data/com.termux/files/home
|
||||
TERMUX_PATHS=data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets
|
||||
if test -n "$PREPEND_SYSTEM_PATH"; then
|
||||
PATH="$PATH:$TERMUX_PATHS"
|
||||
else
|
||||
PATH="$TERMUX_PATHS:$PATH"
|
||||
fi;
|
||||
export PATH;
|
||||
fi;
|
||||
|
||||
# select shell
|
||||
if test -z "$USER_SHELL"; then
|
||||
# check if user has set shell
|
||||
if test -x "$HOME/.termux/shell" ; then
|
||||
ROOT_SHELL=$HOME/.termux/shell
|
||||
# has installed bash?
|
||||
elif test -x "$PREFIX/bin/bash" ; then
|
||||
ROOT_SHELL="$PREFIX/bin/bash"
|
||||
# no..fallback to default ash
|
||||
else
|
||||
ROOT_SHELL="$PREFIX/bin/ash"
|
||||
fi
|
||||
else
|
||||
# expand //usr/ to /usr/
|
||||
USER_SHELL_EXPANDED=$(echo "$USER_SHELL" | sed "s|^//usr/|$PREFIX/|")
|
||||
ROOT_SHELL="$USER_SHELL_EXPANDED"
|
||||
fi
|
||||
|
||||
# using the -c option of su allows to pass enviroment variables
|
||||
for s in '/system/xbin/su' '/su/bin/su'; do
|
||||
if [ -e "$s" ]; then
|
||||
exec "$s" --preserve-environment -c "LD_LIBRARY_PATH=$PREFIX/lib $ROOT_SHELL"
|
||||
fi;
|
||||
done;
|
Loading…
Reference in a new issue