sh 命令是否使用用户 shell

sh 命令是否使用用户 shell

linux 命令是否sh使用用户当前的 shell,即使不是bash?例如,假设用户 bob 正在运行 csh。如果我创建一个带有函数和 csh 的脚本并尝试使用以下命令执行它:

sh cshtestscript

这能用 csh 运行吗?

然后假设另一个用户 joe 正在使用 bash。如果我使用函数和 bash 脚本创建另一个脚本并尝试使用以下命令执行它:

sh bashtestscript

这能与 bash 一起运行吗?

答案1

sh只是一个标准的可执行文件,它始终是特定的 shell。没有什么魔法可以检测出要使用哪个 shell。

% whereis sh
sh: /bin/sh
% ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash

在 Ubuntu 系统上,/bin/sh默认情况下,符号链接指向短跑,这是一个最小的 POSIX shell,用于非交互式使用。如果您sh cshtestscript在 Ubuntu 系统上运行,它将尝试使用 dash 运行脚本。

处理此问题的正确方法是添加舍邦到指示要使用哪个 shell 的脚本,使脚本可执行,并始终将其作为 执行./cshtestscript

#!/bin/csh

相关内容