linux 命令是否sh
使用用户当前的 shell,即使它不是bash
?例如,假设用户 bob 正在运行 csh。如果我创建一个带有函数和 csh 的脚本并尝试执行它:
sh cshtestscript
这会与 csh 一起运行吗?
然后假设另一个用户 joe 正在使用 bash。如果我用函数和 bash 脚本创建另一个脚本并尝试执行它:
sh bashtestscript
这会与 bash 一起运行吗?
linux 命令是否sh
使用用户当前的 shell,即使它不是bash
?例如,假设用户 bob 正在运行 csh。如果我创建一个带有函数和 csh 的脚本并尝试执行它:
sh cshtestscript
这会与 csh 一起运行吗?
然后假设另一个用户 joe 正在使用 bash。如果我用函数和 bash 脚本创建另一个脚本并尝试执行它:
sh bashtestscript
这会与 bash 一起运行吗?
sh
只是一个标准的可执行文件,它始终是一个特定的 shell。没有魔法可以检测使用哪个 shell。在 Ubuntu 系统上,
/bin/sh
是(默认情况下)指向dash的符号链接,它是用于非交互式使用的最小 POSIX shell。如果您sh cshtestscript
在 Ubuntu 系统上运行,它会尝试使用破折号运行脚本。处理这个问题的正确方法是在脚本中添加一个shebang,指示使用哪个 shell,使脚本可执行,并始终将其作为
./cshtestscript
.