Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos $PATH变量从查找器打开时未在gvim/MacVim中正确设置_Macos_Vim_Command Line_Path_Macvim - Fatal编程技术网

Macos $PATH变量从查找器打开时未在gvim/MacVim中正确设置

Macos $PATH变量从查找器打开时未在gvim/MacVim中正确设置,macos,vim,command-line,path,macvim,Macos,Vim,Command Line,Path,Macvim,我使用的是MacVim(基本上是mac的gvim) 如果我从命令行打开macvim,那么我的$PATH变量将被正确设置 如果我使用finder通过点击打开macvim,则将无法正确设置$PATH变量 有人能给我一些见解吗 注意:我知道我的路径至少有一部分是在~/.bashrc中设置的,但我不确定其余部分是在哪里设置的 示例: 如果我从终端打开macvim: % gvim basic.tex 然后在MacVim我会说: :!echo $PATH /opt/local/bin:/opt/loc

我使用的是MacVim(基本上是mac的gvim)

如果我从命令行打开macvim,那么我的
$PATH
变量将被正确设置

如果我使用finder通过点击打开macvim,则将无法正确设置
$PATH
变量

有人能给我一些见解吗

注意:我知道我的路径至少有一部分是在
~/.bashrc
中设置的,但我不确定其余部分是在哪里设置的


示例:

如果我从终端打开macvim:

% gvim basic.tex 
然后在MacVim我会说:

:!echo $PATH
/opt/local/bin:/opt/local/sbin:/sw/bin:/sw/sbin:/Applications/MacVim.app/Contents/M
acOS:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/texbin:/usr/X11R6/bin 
这是正确的道路


当我用鼠标打开文件时(在finder中)

我走的时候:

:!echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin  

它给了我一条小路。为什么?

设置环境变量的位置 在Mac上,用于GUI应用程序(那些通过loginwindow启动的应用程序 查找器等)是
~/.MacOSX/environment.plist

或者,在MacVim中,您可以选择在登录shell中启动vim进程(查看首选项)


有关更多信息,请参见。

路径的差异可能与登录shell(登录)和非登录shell(打开控制台)之间的差异有关

从bash手册页:

当bash作为交互式登录shell调用时。。。它查找~/.bash\u配置文件

启动非登录shell的交互式shell时,bash从/etc/bash.bashrc和~/.bashrc读取并执行命令

为了解决这个问题,我将以下代码添加到我的
~/.bash_配置文件中
,告诉它在存在
~/.bashrc
的情况下获取源代码:

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

我也有同样的问题,但它只是在像这样将默认shell设置为zsh之后出现的

export SHELL=/bin/zsh
似乎OS X zsh设置中有一个bug。简单的解决方法是将
/etc/zshenv
合并到
/etc/zprofile
中。在我的例子中,我没有一个
/etc/zprofile
,所以只需移动文件即可:

ln -s ~/.zshrc ~/.zprofile
sudo mv/etc/zshenv/etc/zprofile


这将更详细地描述解决方案。

对我来说,只需创建一个从.zprofile到.zshrc的新符号链接,就可以实现以下目的:

ln -s ~/.zshrc ~/.zprofile

当它是一个交互式shell时,这不会导致bashrc被加载两次吗?我不相信它会被加载两次。现在我想起来了,这不是解决你问题的办法。。。这就解决了远程登录(例如通过ssh)而无法加载
~/.bashrc
的问题。您没有远程登录。但是,当您正常打开终端时,它将加载您的
.bash\u配置文件
,然后加载您的
.bashrc
(可能顺序相反)。你所做的将使它成功
.bash\u profile
将加载您的
.bashrc
,然后它将加载您的
.bashrc
。可能这并不重要,但如果您想解决这个问题,您可以在
.BASHRC
中加载var
$BASHRC\u,并将所有内容包含在
if(非($BASHRC\u加载))
中。(抱歉语法错误)对于我现在使用的系统(Ubuntu 10.4),当我打开一个终端时,它只加载我的
.bashrc
。如果我ssh到同一个框中,它将加载我的
.bash\u配置文件
。我相信这就是bash通常的工作方式。作为旁注,对于每个用户,Ubuntu都会设置一个
.profile
文件(如果
.bash\u profile
不存在,则会加载该文件),如果存在
.bashrc
,就像我上面提到的一样。这是官方MacVim github wiki上提到的解决方案:(在“针对zsh用户”标题下)我认为关键可能是从
/etc/zshenv
中获取eval/usr/libexec/path\u helper-s命令。我发现答案中的“合并”一词令人困惑。不过,非常有帮助,谢谢。向上投票!你可以使用你自己的
~/.zprofile
而不是使用系统
/etc/zprofile
在我的情况下,我只是将我所有的导出路径从~/.zshrc移到了~/.zprofile,文档说要复制它们并进行排版,但没有必要。唯一对我有效的是
ln-s~/.zshrc~/.zprofile
启动vim的选项登录外壳中的进程在MacVim 7.3中不再可用。有关2021年有效的答案,请参阅此方法。这对我很有效。这是一个最简单的解决办法。只需将
.zsrc
更改为
.zshrc
,或者只需在.zprofile而不是.zshrc中定义路径。