Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Oh My Zsh
Commits
fd4571d1
Commit
fd4571d1
authored
Sep 08, 2019
by
Marc Cornellà
Browse files
installer: allow chsh to work in termux
parent
f9e133b8
Changes
1
Hide whitespace changes
Inline
Side-by-side
tools/install.sh
View file @
fd4571d1
...
...
@@ -165,29 +165,37 @@ setup_shell() {
*
)
echo
"Invalid choice. Shell change skipped."
;
return
;;
esac
# Test for the right location of the "shells" file
if
[
-f
/etc/shells
]
;
then
shells_file
=
/etc/shells
elif
[
-f
/usr/share/defaults/etc/shells
]
;
then
# Solus OS
shells_file
=
/usr/share/defaults/etc/shells
else
error
"could not find /etc/shells file. Change your default shell manually."
return
fi
# Check if we're running on Termux
case
"
$PREFIX
"
in
*
com.termux
*
)
termux
=
true
;
zsh
=
zsh
;;
*
)
termux
=
false
;;
esac
# Get the path to the right zsh binary
# 1. Use the most preceding one based on $PATH, then check that it's in the shells file
# 2. If that fails, get a zsh path from the shells file, then check it actually exists
if
!
zsh
=
$(
which zsh
)
||
!
grep
-qx
"
$zsh
"
"
$shells_file
"
;
then
if
!
zsh
=
$(
grep
'^/.*/zsh$'
"
$shells_file
"
|
tail
-1
)
||
[
!
-f
"
$zsh
"
]
;
then
error
"no zsh binary found or not present in '
$shells_file
'"
error
"change your default shell manually."
if
[
"
$termux
"
!=
true
]
;
then
# Test for the right location of the "shells" file
if
[
-f
/etc/shells
]
;
then
shells_file
=
/etc/shells
elif
[
-f
/usr/share/defaults/etc/shells
]
;
then
# Solus OS
shells_file
=
/usr/share/defaults/etc/shells
else
error
"could not find /etc/shells file. Change your default shell manually."
return
fi
# Get the path to the right zsh binary
# 1. Use the most preceding one based on $PATH, then check that it's in the shells file
# 2. If that fails, get a zsh path from the shells file, then check it actually exists
if
!
zsh
=
$(
which zsh
)
||
!
grep
-qx
"
$zsh
"
"
$shells_file
"
;
then
if
!
zsh
=
$(
grep
'^/.*/zsh$'
"
$shells_file
"
|
tail
-1
)
||
[
!
-f
"
$zsh
"
]
;
then
error
"no zsh binary found or not present in '
$shells_file
'"
error
"change your default shell manually."
return
fi
fi
fi
# We're going to change the default shell, so back up the current one
if
[
-n
$SHELL
]
;
then
if
[
-n
"
$SHELL
"
]
;
then
echo
$SHELL
>
~/.shell.pre-oh-my-zsh
else
grep
"^
$USER
:"
/etc/passwd |
awk
-F
:
'{print $7}'
>
~/.shell.pre-oh-my-zsh
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment