根据https://wiki.ubuntu.com/DashAsBinSh:
默认登录 shell 仍为 bash。从菜单或快捷方式 [crtl-alt-t] 打开终端可提供交互式 bash。从桌面或文件管理器运行的脚本,通过对话框“在终端中运行”将作为 POSIX dash 执行。
livy@disco-dingo:~$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Aug 22 10:53 /bin/sh -> dash
livy@disco-dingo:~$ cat Desktop/test.sh
echo $SHELL > ~/Desktop/test-result.txt;
我添加了执行权限,然后双击该test.sh
文件,结果如下:
livy@disco-dingo:~$ cat Desktop/test-result.txt
/bin/bash
Ubuntu wiki 是否已经过时了?
答案1
根据nixCraft:我如何找出我在 Linux/Unix 上使用的 shell?
...
$SHELL
是当前用户的shell,但不一定是在移动时运行的shell。[原文如此]
我不知道如何获取当前正在运行的 shell。以下仅给出脚本的名称:
ps -p $$ > ~/Desktop/test-result.txt
但以下情况除外:
pstree -s $$ > ~/Desktop/test-result.txt
在我的电脑上有以下输出:
systemd---test.sh---pstree
要查看是否dash
正在运行,您可以尝试:
pgrep dash > ~/Desktop/test-result.txt
首先在交互式 shell 中检查它是否尚未运行,以避免误报。在我的计算机上,即使我有#!/bin/dash
,dash
似乎也没有使用。因此似乎systemd
可能直接运行脚本。