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 <etereoc...@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
> - $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 
> (<srira...@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 <etereoc...@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?
> 

Reply via email to