【问题标题】:How to tell Sublime(Linter) to use ZSH instead of BASH?如何告诉 Sublime(Linter) 使用 ZSH 而不是 BASH?
【发布时间】: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


【解决方案1】:

我不确定为什么它使用 Bash 而不是 ZSH。这可能不是问题,但即使您使用的是 ZSH,我也会确保您的主文件夹中没有诸如 .bash_profile 之类的 bash 文件。另外,我会尝试确保您通过 ZSH 打开 ST(同样,可能没有什么不同)。

如果仍然无法正常工作,您可以随时通过 SublimeLinter 的用户设置 JSON 文件手动指定 linter 的路径:

    "paths": {
        "linux": [],
        "osx": [
            "/path-to-linter"
        ],
        "windows": []
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2023-03-18
    • 2012-10-27
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    相关资源
    最近更新 更多