如何从 shell 脚本中检测命令解释器?

Ing*_*ngo 5 scripting shell-script

可能的重复:
如何测试我在终端中使用的外壳?

我想检测 shell 脚本正在使用哪个解释器。例如下面的脚本:

#!/bin/bash

issue_interpreter_name()
Run Code Online (Sandbox Code Playgroud)

应该显示解释器:

bash
Run Code Online (Sandbox Code Playgroud)

jip*_*pie 10

#!/bin/sh  
ps h -p $$ -o args='' | cut -f1 -d' '
Run Code Online (Sandbox Code Playgroud)
  • ps 进程列表
  • h 不打印列标题
  • -p <PID> 仅列出进程 ID PID
  • $$ 由具有当前 PID 的外壳替换
  • -o args 打印命令行,无其他信息
  • cut 将输出分成几部分
  • -f1 只打印第一个字段
  • -d' ' 使用空格作为字段分隔符

    $ ./testje

    /bin/sh


小智 -1

如果是本地用户,/etc/passwd 的第 7 个字段就是他们的 shell。您正在寻找当前首选的外壳吗?

  • -1 默认登录 shell 不一定是当前正在运行的 shell。 (2认同)