zsh problems MacOS High Sierra

Sriranga Veeraraghavan sriranga at berkeley.edu
Thu May 5 18:01:10 UTC 2022


Happy to have been of help.

Best,

-ranga

> On May 5, 2022, at 10:11, Jean Bermudez <etereocode at gmail.com> wrote:
> 
> Thank you very much! This fixed my problem. I have zsh 5.8.1 as the default shell and I can run NeoVim without problems.
> 
> El lun, 2 may 2022 a las 16:33, Sriranga Veeraraghavan (<sriranga at berkeley.edu <mailto:sriranga at berkeley.edu>>) escribió:
> Hi Jean,
> 
> Is /opt/local/bin/zsh in your /etc/shells now?  You can check as follows:
> 
> /usr/bin/grep -i zsh /etc/shells
> 
> If this includes /opt/local/bin/zsh, then you can probably use /opt/local/bin/zsh as a valid login shell.  If so, you can now probably try the following to change your shell:
> 
> /usr/bin/chsh -s /opt/local/bin/zsh
> 
> This should probably change your login shell to /opt/local/bin/zsh.  This was the same command that was in my prior email, except that it omits the ‘$’ character, which, by convention, is the default shell prompt and should not be treated as part of the command.
> 
> I think the rest of your problems may be due to the PATH environment variable not being set properly.  For zsh, I would suggest that you set up your PATH environment variable as follows:
> 
> /bin/echo 'export PATH="/opt/local/bin:/bin:/sbin:/usr/bin:/usr/sbin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin"' > ~/.zshenv
> 
> For your reference, the PATH environment variable is a list of all the directories that your shell (zsh or bash) will look in for commands.  The ‘:’ character separates the directories.  The order in which the directories are listed is important.  In the above, /opt/local/bin is ahead of all of the other directories, so that you will get the MacPorts versions of commands rather than the versions that are in other directories (the Apple provided versions are usually in /bin or /usr/bin).  
> 
> HTH,
> 
> -ranga
> 
> > On May 2, 2022, at 12:55, Jean Bermudez <etereocode at gmail.com <mailto:etereocode at gmail.com>> wrote:
> > 
> > Hi! Thank you for your answer!
> > 
> > I was trying a few things before your reply. In the #macpports channel on libera.chat, 
> > they recommended me to run this: echo "/opt/local/bin/zsh" | sudo tee -a /etc/shells
> > 
> > ...to set my user's login shell to /opt/local/bin/zsh.
> > 
> > After that they was recommended me to run: "chsh -s /opt/local/bin/zsh" to set zsh as default shell.
> > 
> > I tried that, and everything continued the same way. I commented that when I use the command "echo $ZSH_VERSION" the answer is 5.8.1 (the installed version of MacPorts), instead when I use the command "zsh -version" it answers me 5.3 (the High Sierra version).
> > 
> > Faced with this, in the #macports chat on libera chat I got the following response:
> > 
> > - $ZSH_VERSION is what your current shell is
> > - zsh --version is whatever is first in your $PATH
> > - which also explains why it works for bash - your $PATH contains /opt/local/bin before /bin
> > - That also explains why it works for zsh started from bash, because that usually keeps $PATH the same, so /opt/local/bin is again before /bin
> > - See https://guide.macports.org/#installing.shell.postflight <https://guide.macports.org/#installing.shell.postflight>
> > - $PATH is btw also the reason why the nvim command doesn't work.
> > - export PATH=/opt/local/bin:$PATH; hash -r; nvim will probably work in all shells
> > 
> > When I use "export PATH=/opt/local/bin:$PATH; hash -r; nvim" NeoVim starts, but when I close the terminal and try to open NeoVim with the command "nvim" I get as response "nvim: command not found".
> > 
> > Additionally trying some things, I used this command "cat > ~/.bash_profile" which brought me some problems. I had to reset .bash_profile.
> > 
> > Now when I run "nvim" I cannot access NeoVim from any of the SHELLS. The only way I can access NeoVim currently is by using "export PATH=/opt/local/bin:$PATH; hash -r; nvim".
> > 
> > I tried the commands you recommended.
> > - sudo /bin/sh -c '/bin/echo /opt/local/bin/zsh >> /etc/shells'. 
> > In response I get an empty command line with a ">" at the beginning.
> > 
> > - $ /usr/bin/chsh -s /opt/local/bin/zsh
> > - $ /bin/echo 'PATH="$PATH:/opt/local/bin:/opt/local/sbin"' >> ~/.zshenv
> > In response to these last two commands I get: -bash: $: command not found
> > 
> > 
> > El lun, 2 may 2022 a las 15:04, Sriranga Veeraraghavan (<sriranga at berkeley.edu <mailto:sriranga at berkeley.edu>>) escribió:
> > Hi Jean,
> > 
> > I think that this isn’t working for you because MacPorts generally installs programs in /opt/local/bin.  
> > 
> > If you have installed zsh using MacPorts and you want to make the MacPort’s version of zsh your default shell, you’ll probably need to do something like the following:
> > 
> > $ sudo /bin/sh -c '/bin/echo /opt/local/bin/zsh >> /etc/shells’ 
> > $ /usr/bin/chsh -s /opt/local/bin/zsh
> > 
> > The first line adds /opt/local/bin/zsh to /etc/shells as a permitted login shell.  The command you were using only designated the Apple provided zsh, /bin/zsh, as a permitted login shell.  
> > 
> > The second line changes the default shell to /opt/local/bin/zsh.  The command you were using probably didn’t accomplish this for you because ${prefix} is a variable used to specify the MacPorts directory, which probably wasn’t defined.  I believe the MacPorts instructions use ${prefix} rather than /opt/local because it is technically possible to install MacPorts in a location other than /opt/local.
> > 
> > Regarding nvim, the reason that zsh can’t find it is probably that the directory /opt/local/bin is not included zsh's PATH environment variable.  I am not a zsh user, but I believe that you can probably fix this as follows:
> > 
> > $ /bin/echo 'PATH="$PATH:/opt/local/bin:/opt/local/sbin"' >> ~/.zshenv
> > 
> > With respect to the extra entries in /etc/shell, my guess is that, if the above steps gets things working for you, can just leave that file alone and it will not affect anything on your system.  If you want, you can edit that file and remove the extra entries. 
> > 
> > Please note, if you are using Terminal.app it still may not use the MacPort’s version of zsh as the default shell because I believe that Terminal.app has a separate preference that can be used to define the shell for new Terminal windows/tabs.  
> > 
> > I don’t have High Sierra installed on any of Macs, but I believe that if you open the Preferences windows in Terminal.app and then click on the General tab / button, you will see a setting that reads something like “Shells open with:”.  This preference setting should allow you to configure which shell is used by Terminal.app.  You many need to change the setting to ‘/opt/local/bin/zsh’ to use the MacPorts version of zsh.
> > 
> > HTH,
> > 
> > -ranga
> > 
> > > On May 2, 2022, at 08:22, Jean Bermudez <etereocode at gmail.com <mailto:etereocode at gmail.com>> wrote:
> > > 
> > > Hi there! 
> > > 
> > > I installed "NeoVim" and "zsh" via MacPorts on MacOs High Sierra.
> > > 
> > > I have a problem. High Sierra comes with "zsh" version 5.3 installed by default. I noticed this after I installed zsh version 5.8.1 via MacPorts.
> > > 
> > > How did I figure it out?
> > > - I changed the default shell (bash) to "zsh" via the command "chsh -s /bin/zsh".
> > > - I tried to start NeoVim with the command "nvim".
> > > - And the system responded "zsh: command not found: nvim".
> > > - After trying several things, I entered the command "zsh -version" and the version that was active was 5.3 (High Sierra).
> > > - I went back to the "bash" shell and simply entered the command "zsh" to use the zsh shell, and when I checked the version (zsh -version) the version was 5.8.1 (MacPorts). I entered the command "nvim" and it worked.
> > > 
> > > I got desperate looking for a solution and entered several times the command you provide on your site to set MacPorts': sudo sh -c 'echo ${prefix}/bin/zsh >>/etc/shells'.
> > > 
> > > Now when I check the list of Shells with "cat /etc/shells". I get "/bin/zsh" four times.
> > > 
> > > I want to delete all zsh and install only the MacPorts "zsh" cleanly; and then set that shell to default.
> > > 
> > > How do I do this?
> > 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macports.org/pipermail/macports-users/attachments/20220505/ca2a083a/attachment.htm>


More information about the macports-users mailing list