This is in response to #3360.
Basically this changes two things:
- It prints out `Running: chsh -s /bin/zsh` right before running `chsh` so if that fails the user can fix the problem and copy-paste, try again.
- If zsh is not installed it tells the user this and then instructs the user to install zsh then run `` chsh -s `which zsh` `` afterwards.
In the latter case it exits afterwards to prevent the next step from failing, i.e. `env zsh`.
This could be improved on by restructuring the logic further and bailing out earlier when `zsh` is not installed, similar to how it handles `git` not being available. However, this is still better than the current behavior of `chsh` failing and the install stopping in the middle:
```
$ curl -L http://install.ohmyz.sh | sh
[...]
Cloning Oh My Zsh...
Cloning into '/home/user/.oh-my-zsh'...
[...]
Looking for an existing zsh config...
Using the Oh My Zsh template file and adding it to ~/.zshrc
Copying your current PATH and adding it to the end of ~/.zshrc for you.
Time to change your default shell to zsh!
chsh: option requires an argument -- 's'
Usage: chsh [options] [LOGIN]
Options:
-h, --help display this help message and exit
-s, --shell SHELL new login shell for the user account
```
Reverts #2296, but mostly #1883.
There is no need to source ~/.profile when this script is read. oh-my-zsh writes no configuration data in ~/.profile.
If the user wishes to use data within ~/.profile, then they should source it in another place.
Fixes#2315
Reverts #2296, but mostly #1883.
There is no need to source ~/.profile when this script is read. oh-my-zsh writes no configuration data in ~/.profile.
If the user wishes to use data within ~/.profile, then they should source it in another place.
Fixes#2315
The intention of the redirection to /dev/null is to hide the output
'hash: no such command: git' since we rely on the exit status.
However, the output goes to stderr, so it's stderr that needs to be
redirected. For completeness, we redirect both stderr and stdout using
'2>&1'.
Example:
[~]$ hash git > /dev/null
[~]$ PATH=''
[~]$ hash git > /dev/null
hash: no such command: git
[~]$ hash git > /dev/null 2>&1
[~]$
Although the zshrc template adds a PATH= string, this is overwritten by the installer script.
This allows it to be placed anywhere in the file instead of having to append at the end.
Changing the working directory in a sub-subshell
does not change the working directory of the executing
shell.
The substitution was broken for me on _all_ my machines,
so I started looking into the business.