【问题标题】:`echo $0` returns full path instead of dash-prefixed shell in VS Code`echo $0` 在 VS Code 中返回完整路径而不是破折号前缀的 shell
【发布时间】:2020-05-14 10:49:45
【问题描述】:

我在 macOS 上运行 VS Code(如果重要的话,是 10.13.6)。这是我在其集成终端中得到的:

$ echo $0
/bin/bash

但在 macOS 终端应用程序中,我得到:

$ echo $0
-bash

我见过dash prefix means it's a login shell。 VS Code 不是这样吗?这里说的是the default for macOS

我一直在尝试将 Login Shell 更改为 /bin/zsh,然后更改为 /usr/local/bin/zsh 以使用来自 Homebrew 的安装。这引起了一些混乱。

【问题讨论】:

  • 那么...你的问题是什么?
  • 这是 MacOS 终端启动 shell 时的默认设置。 MacOS 中并非默认无处不在
  • 无论如何,你的实际目标是什么?如果你想知道当前的 shell 是否是登录 shell,可靠的测试方法是 [[ $- = *l* ]](或者,更便携的,case $- in *l*) echo "Yes, it's a login shell";; *) echo "No, it's not a login shell";; esac),与 $0 完全无关。
  • ...类似地,如果您想知道当前的 shell 是否是 bash,那么可靠的测试方法更像是 if [ -n "$BASH_VERSION" ]; then echo "The current shell either is bash, or is run by someone who wants to pretend to be bash"; fi$0 确实没有太多好的用例——请参阅 BashFAQ #28 描述它是如何不适合的,即使人们经常尝试将其用于查找当前正在运行的脚本的位置.

标签: bash shell visual-studio-code echo zsh


【解决方案1】:

根据 Charles cmets,如果您添加一些日志/回声,例如:

if [ -n "$BASH_VERSION" ]; then echo "The current shell either is bash, or is run by someone who wants to pretend to be bash"; fi

当您打开一个新终端时,您将在 .bashrc 文件的顶部看到一个日志,该日志将因此确认该 bashrc 已由您的终端应用程序或 vscode 集成终端加载。如果它没有被记录,那么你将从不同的位置加载一个 bash 文件。

我想你会发现两者是一样的。

题外话,但觉得这也可能是有趣的事情。如果您有图标问题,即 vscode 没有加载终端中可用的图标,可能是因为它们没有可用的字体,您需要下载它们。

这是 zsh-theme-powerlevel10k 上 font.md 的解决方案,在 bash 中可能类似。

  • Visual Studio Code:打开文件 → 首选项 → 设置 (PC) 或 代码 → 首选项 → 设置 (Mac),在搜索框中输入 terminal.integrated.fontFamily 设置选项卡的顶部并将下面的值设置为MesloLGS NF。 咨询this screenshot 了解它的外观或查看this issue 了解更多信息。

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    相关资源
    最近更新 更多