【发布时间】:2015-08-16 11:40:49
【问题描述】:
我正在使用 zsh,但 SublimeLinter 正在从 bash shell 中获取路径,导致无法找到可执行文件。例如,我使用 npm 全局安装了 eslint,它需要在 .zprofile 中设置的 NVM 目录中找到它。这是 Sublime 的调试输出:
SublimeLinter: user shell: /bin/bash
SublimeLinter: computed PATH using /bin/bash:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
我已使用 chsh -s /bin/zsh 将系统中的默认 shell 设置为 zsh,所以我不知道它为什么使用 bash,我找不到有关此的信息。
我在 OSX 上使用 Sublime Text 3。
【问题讨论】:
-
“我不知道它为什么使用 bash。”好吧,并不是每个程序在启动 shell 之前都会咨询
$SHELL或/etc/passwd,尤其是当它是一个未设置$SHELL的GUI 程序时(哦,在OS X 上,您的用户甚至没有在/etc/passwd中列出,所以它无法从那里找到你的外壳;我不知道opendirectoryd,所以我不会对此发表评论)。 -
大多数程序根本不在 /etc/passwd 中查找;他们调用
getpw*库函数。您可以在命令行中使用perl -le 'print join ":", getpwnam("username")'之类的方式快速完成此操作。 -
0x80 你有想过这个吗?我遇到了完全相同的问题。 ST3,使用 zsh,但我在 sublimelinter 的调试日志中看到“使用
/bin/bash作为用户 shell。所以它找不到我安装的 linter。
标签: macos bash shell sublimetext3 zsh