相关疑难解决方法(0)

如何测试我在终端中使用的外壳?

如何检查我在终端中使用的外壳?我在 MacOS 中使用的外壳是什么?

shell

96
推荐指数
5
解决办法
13万
查看次数

我如何*可靠*和*简单*获得当前的shell解释器名称?

我正在寻找一种简单可靠的方法来从脚本或源文件(而不是从命令行)中获取当前 shell 的名称。我本来希望这样做,$(basename "$SHELL")但是如果我的登录 shell 是zsh并且我在 some_script.sh 中有以下代码

this_shell=$( basename "$SHELL" )
echo "The Shell is $this_shell"
echo "The Shell is $0"
Run Code Online (Sandbox Code Playgroud)

我用 运行它bash some_script.sh,它仍然列出zsh而不是bash即使使用的解释器是/bin/bash. 我不确定为什么外壳设计者选择显示默认外壳而不是当前外壳,但这似乎是我们所坚持的。

还有一些其他稍微相似的问题(这里这里),但他们的答案在很多方面都不够。

  1. 他们经常假设用户试图找出他们当前使用的交互式 shell,但这太疯狂了。我知道我正在向哪个 shell 输入命令——我需要可以在任何地方运行的代码,以便能够确定正在使用什么 shell 。
  2. 他们经常提供几种不同的尝试——再次就像你在命令行上一样,在你学会使用 bash 之前可以随意摆弄——但我需要一件在所有上下文中都可靠的东西。
  3. 他们经常提供脚本中完全无用的东西,比如echo $0. 如上面的脚本所示,这失败了。(是的,它可以在交互式 shell 命令行中使用,但是您为什么不知道您使用的是什么 shell?)
  4. 他们有时会给出(在我有限的测试中)包含正确信息的命令,例如ps -p $$,但缺乏跨平台、跨外壳兼容的 sed/awk 命令来通过管道传递它以获取外壳名称并忽略随之而来的其他信息为骑行。
  5. 它们包括只能在几个 shell 上工作的东西,比如$BASH_VERSION和 …

shell bash zsh

12
推荐指数
2
解决办法
6012
查看次数

在哪里可以找到 ls 命令的 shell 脚本?

我试图了解该ls命令的工作原理,并且我认为有一个 shell 脚本定义ls了文件系统中的某处。这个正确吗?如果是这样,我在哪里可以找到它?

shell shell-script directory-structure

0
推荐指数
1
解决办法
1551
查看次数

标签 统计

shell ×3

bash ×1

directory-structure ×1

shell-script ×1

zsh ×1