Loading ...
Sorry, an error occurred while loading the content.

Re: MacVim and $PATH

Expand Messages
  • Israel Chauca F.
    ... Coincidentally, today I had some problems involving wrong paths on vim (seems like I hadn t fixed anything after all), so I did some tests with vim, gvim
    Message 1 of 16 , Feb 18, 2011
    • 0 Attachment
      On Feb 17, 2011, at 12:26 PM, Björn Winckler wrote:

      > On Feb 17, 2011, at 1:54 PM, Wes Baker wrote:
      >
      >> I'm now only setting the $PATH in .profile and .zprofile and I've also
      >> set MMLoginShellCommand for MacVim and I'm still having the same exact
      >> problem.
      >>
      >> I changed my shell in the Accounts Preference Pane, which I'm assuming
      >> used chsh, but I'm not too sure.
      >>
      >> Any other ideas?
      >
      > I'm stumped. Can you try changing your shell back to bash and see if you still have the same problems?

      Coincidentally, today I had some problems involving wrong paths on vim (seems like I hadn't fixed anything after all), so I did some tests with vim, gvim and gvim launched from the terminal, and the paths appear to be created in the following way:

      1.- vim:
      :echo $PATH => ($PATH from .zshrc)
      :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)

      2.- gvim:
      :echo $PATH => ($PATH from .zprofile)
      :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zprofile)

      3.- gvim from terminal:
      :echo $PATH => ($PATH from .zshrc)
      :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)

      Why the difference between the $PATHs? The second form is what path_helper returns.

      The only way to make $HOME/bin to take precedence would be to add the full path to /etc/paths, which doesn't look right.

      Is there any way to change this behaviour?

      Thanks!
      Israel

      --
      You received this message from the "vim_mac" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    • Björn Winckler
      ... Out of curiosity I tried this experiment myself but I get the same path in all six cases. I m using the default bash shell... ... I don t understand these
      Message 2 of 16 , Feb 19, 2011
      • 0 Attachment
        On Feb 19, 2011, at 2:12 AM, Israel Chauca F. wrote:
        > Coincidentally, today I had some problems involving wrong paths on vim (seems like I hadn't fixed anything after all), so I did some tests with vim, gvim and gvim launched from the terminal, and the paths appear to be created in the following way:
        >
        > 1.- vim:
        > :echo $PATH => ($PATH from .zshrc)
        > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
        >
        > 2.- gvim:
        > :echo $PATH => ($PATH from .zprofile)
        > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zprofile)
        >
        > 3.- gvim from terminal:
        > :echo $PATH => ($PATH from .zshrc)
        > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
        >
        > Why the difference between the $PATHs? The second form is what path_helper returns.

        Out of curiosity I tried this experiment myself but I get the same path in all six cases. I'm using the default bash shell...

        > The only way to make $HOME/bin to take precedence would be to add the full path to /etc/paths, which doesn't look right.
        >
        > Is there any way to change this behaviour?

        I don't understand these issues but it seems to be related to zsh somehow.

        Björn

        --
        You received this message from the "vim_mac" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php
      • Ben Schmidt
        ... Hmm. OK. So when zsh is used by Vim to run external commands we have the problem. Looks like it s caused by /etc/zshenv, which calls path_helper for all
        Message 3 of 16 , Feb 19, 2011
        • 0 Attachment
          > Coincidentally, today I had some problems involving wrong paths on vim
          > (seems like I hadn't fixed anything after all), so I did some tests
          > with vim, gvim and gvim launched from the terminal, and the paths
          > appear to be created in the following way:
          >
          > 1.- vim:
          > :echo $PATH => ($PATH from .zshrc)
          > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
          >
          > 2.- gvim:
          > :echo $PATH => ($PATH from .zprofile)
          > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zprofile)
          >
          > 3.- gvim from terminal:
          > :echo $PATH => ($PATH from .zshrc)
          > :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
          >
          > Why the difference between the $PATHs? The second form is what
          > path_helper returns.

          Hmm. OK. So when zsh is used by Vim to run external commands we have the
          problem. Looks like it's caused by /etc/zshenv, which calls path_helper
          for all zsh invocations, not just login shell invocations. That's not
          right, really, so it's a bug in how Mac OS X is set up. /etc/zshenv
          should be used by a sysadmin to set environment variables that restrict
          the shell so that users can't do stuff they shouldn't be allowed to; it
          shouldn't be used to set the PATH which is a user-controllable thing
          that should be inherited by non-login shells.

          Since when Vim runs external commands, it's not an interactive shell,
          zshrc stuff is not read, and it's not a login shell so zprofile is not
          read, so the path cannot really be fixed by these files.

          So the path_helper stuff in /etc/zshenv should really needs to be moved
          to /etc/zprofile where it belongs. Then it will only affect login
          shells, and login is the correct time to set the path. And this still
          happens before the ~/.zprofile stuff, so users can change it at login,
          and before zshrc stuff, so sysadmin or users can adjust it for
          interactive use. This is all how it should work and how vim kinda
          assumes it will work.

          So

          sudo mv /etc/zshenv /etc/zprofile

          and I think everything will be good! (Be careful that /etc/zprofile
          doesn't already exist. If it does, obviously you need to merge the
          contents of zshenv into it, rather than just replacing it.)

          Hope this helps. Do let us know the verdict....

          Ben.



          --
          You received this message from the "vim_mac" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php
        • Israel Chauca F.
          ... Quite nice! I modified those files as needed and now Vim picks all my executables from the expected places. I know this is a Zsh issue, but we have users
          Message 4 of 16 , Feb 19, 2011
          • 0 Attachment
            On Feb 19, 2011, at 8:40 AM, Ben Schmidt wrote:

            >> Coincidentally, today I had some problems involving wrong paths on vim
            >> (seems like I hadn't fixed anything after all), so I did some tests
            >> with vim, gvim and gvim launched from the terminal, and the paths
            >> appear to be created in the following way:
            >>
            >> 1.- vim:
            >> :echo $PATH => ($PATH from .zshrc)
            >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
            >>
            >> 2.- gvim:
            >> :echo $PATH => ($PATH from .zprofile)
            >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zprofile)
            >>
            >> 3.- gvim from terminal:
            >> :echo $PATH => ($PATH from .zshrc)
            >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
            >>
            >> Why the difference between the $PATHs? The second form is what
            >> path_helper returns.
            >
            > Hmm. OK. So when zsh is used by Vim to run external commands we have the
            > problem. Looks like it's caused by /etc/zshenv, which calls path_helper
            > for all zsh invocations, not just login shell invocations. That's not
            > right, really, so it's a bug in how Mac OS X is set up. /etc/zshenv
            > should be used by a sysadmin to set environment variables that restrict
            > the shell so that users can't do stuff they shouldn't be allowed to; it
            > shouldn't be used to set the PATH which is a user-controllable thing
            > that should be inherited by non-login shells.
            >
            > Since when Vim runs external commands, it's not an interactive shell,
            > zshrc stuff is not read, and it's not a login shell so zprofile is not
            > read, so the path cannot really be fixed by these files.
            >
            > So the path_helper stuff in /etc/zshenv should really needs to be moved
            > to /etc/zprofile where it belongs. Then it will only affect login
            > shells, and login is the correct time to set the path. And this still
            > happens before the ~/.zprofile stuff, so users can change it at login,
            > and before zshrc stuff, so sysadmin or users can adjust it for
            > interactive use. This is all how it should work and how vim kinda
            > assumes it will work.
            >
            > So
            >
            > sudo mv /etc/zshenv /etc/zprofile
            >
            > and I think everything will be good! (Be careful that /etc/zprofile
            > doesn't already exist. If it does, obviously you need to merge the
            > contents of zshenv into it, rather than just replacing it.)
            >
            > Hope this helps. Do let us know the verdict....

            Quite nice! I modified those files as needed and now Vim picks all my executables from the expected places.

            I know this is a Zsh issue, but we have users coming to IRC asking why their commands aren't found. So, maybe a note about this could go on the Troubleshooting section of the FAQ. I know the "other rc-files" section covers this, but it seems that many people (like me) have no idea about /etc/zshenv being there at all, so the problem remains unsolved.

            Cheers,
            Israel

            --
            You received this message from the "vim_mac" maillist.
            Do not top-post! Type your reply below the text you are replying to.
            For more information, visit http://www.vim.org/maillist.php
          • Israel Chauca F.
            ... Many thanks, Ben. Israel -- You received this message from the vim_mac maillist. Do not top-post! Type your reply below the text you are replying to. For
            Message 5 of 16 , Feb 19, 2011
            • 0 Attachment
              On Feb 19, 2011, at 8:40 AM, Ben Schmidt wrote:

              >> Coincidentally, today I had some problems involving wrong paths on vim
              >> (seems like I hadn't fixed anything after all), so I did some tests
              >> with vim, gvim and gvim launched from the terminal, and the paths
              >> appear to be created in the following way:
              >>
              >> 1.- vim:
              >> :echo $PATH => ($PATH from .zshrc)
              >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
              >>
              >> 2.- gvim:
              >> :echo $PATH => ($PATH from .zprofile)
              >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zprofile)
              >>
              >> 3.- gvim from terminal:
              >> :echo $PATH => ($PATH from .zshrc)
              >> :!echo $PATH => ($PATH from /etc/paths)+($PATHs from /etc/paths.d/*)+($PATH from .zshrc)
              >>
              >> Why the difference between the $PATHs? The second form is what
              >> path_helper returns.
              >
              > Hmm. OK. So when zsh is used by Vim to run external commands we have the
              > problem. Looks like it's caused by /etc/zshenv, which calls path_helper
              > for all zsh invocations, not just login shell invocations. That's not
              > right, really, so it's a bug in how Mac OS X is set up. /etc/zshenv
              > should be used by a sysadmin to set environment variables that restrict
              > the shell so that users can't do stuff they shouldn't be allowed to; it
              > shouldn't be used to set the PATH which is a user-controllable thing
              > that should be inherited by non-login shells.
              >
              > Since when Vim runs external commands, it's not an interactive shell,
              > zshrc stuff is not read, and it's not a login shell so zprofile is not
              > read, so the path cannot really be fixed by these files.
              >
              > So the path_helper stuff in /etc/zshenv should really needs to be moved
              > to /etc/zprofile where it belongs. Then it will only affect login
              > shells, and login is the correct time to set the path. And this still
              > happens before the ~/.zprofile stuff, so users can change it at login,
              > and before zshrc stuff, so sysadmin or users can adjust it for
              > interactive use. This is all how it should work and how vim kinda
              > assumes it will work.
              >
              > So
              >
              > sudo mv /etc/zshenv /etc/zprofile
              >
              > and I think everything will be good! (Be careful that /etc/zprofile
              > doesn't already exist. If it does, obviously you need to merge the
              > contents of zshenv into it, rather than just replacing it.)
              >
              > Hope this helps. Do let us know the verdict....

              Many thanks, Ben.

              Israel

              --
              You received this message from the "vim_mac" maillist.
              Do not top-post! Type your reply below the text you are replying to.
              For more information, visit http://www.vim.org/maillist.php
            • Björn Winckler
              ... Please do add a section to the FAQ [1] -- it is a wiki so anybody can edit it. I d do it myself, but as should be quite obvious I don t really get what s
              Message 6 of 16 , Feb 19, 2011
              • 0 Attachment
                On Feb 19, 2011, at 8:53 PM, Israel Chauca F. wrote:
                >
                > I know this is a Zsh issue, but we have users coming to IRC asking why their commands aren't found. So, maybe a note about this could go on the Troubleshooting section of the FAQ. I know the "other rc-files" section covers this, but it seems that many people (like me) have no idea about /etc/zshenv being there at all, so the problem remains unsolved.

                Please do add a section to the FAQ [1] -- it is a wiki so anybody can edit it. I'd do it myself, but as should be quite obvious I don't really get what's going on here so better somebody who does know adds an item.

                Björn

                [1] https://github.com/b4winckler/macvim/wiki/FAQ

                --
                You received this message from the "vim_mac" maillist.
                Do not top-post! Type your reply below the text you are replying to.
                For more information, visit http://www.vim.org/maillist.php
              • barry.allard@...
                ... Just encountered this problem also 4 years later. The issue is with OS X /etc/zshenv and /etc/profile overwriting PATH blindly in subshells. The fix is to
                Message 7 of 16 , Jan 14
                • 0 Attachment
                  On Saturday, February 19, 2011 at 1:39:07 PM UTC-8, björn wrote:
                  > On Feb 19, 2011, at 8:53 PM, Israel Chauca F. wrote:
                  > >
                  > > I know this is a Zsh issue, but we have users coming to IRC asking why their commands aren't found. So, maybe a note about this could go on the Troubleshooting section of the FAQ. I know the "other rc-files" section covers this, but it seems that many people (like me) have no idea about /etc/zshenv being there at all, so the problem remains unsolved.
                  >
                  > Please do add a section to the FAQ [1] -- it is a wiki so anybody can edit it. I'd do it myself, but as should be quite obvious I don't really get what's going on here so better somebody who does know adds an item.
                  >
                  > Björn
                  >
                  > [1] https://github.com/b4winckler/macvim/wiki/FAQ


                  Just encountered this problem also 4 years later. The issue is with OS X /etc/zshenv and /etc/profile overwriting PATH blindly in subshells.

                  The fix is to replace each path_helper block with the following: sudo vi /etc/{profile,zshenv}

                  if [ -x /usr/libexec/path_helper ]; then
                  if [ -z "$PATH" ] || [ "$PATH" = /usr/bin:/bin:/usr/sbin:/sbin ]; then
                  eval `/usr/libexec/path_helper -s`
                  fi
                  fi

                  It's probably worth submitting an Apple radar ticket so that it's fixed forever.

                  Barry Allard

                  --
                  --
                  You received this message from the "vim_mac" maillist.
                  Do not top-post! Type your reply below the text you are replying to.
                  For more information, visit http://www.vim.org/maillist.php

                  ---
                  You received this message because you are subscribed to the Google Groups "vim_mac" group.
                  To unsubscribe from this group and stop receiving emails from it, send an email to vim_mac+unsubscribe@....
                  For more options, visit https://groups.google.com/d/optout.
                Your message has been successfully submitted and would be delivered to recipients shortly.