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

Re: MacVim and $PATH

Expand Messages
  • 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 1 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 2 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 3 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 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....

            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 5 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 6 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.