添加 sh 有什么作用?

添加 sh 有什么作用?

我对使用终端还很陌生,我一直盲目地遵循指南,却不知道它为什么在那里,它有什么作用......尽管这些指南帮助我安装了 vmware 播放器。

这个对我有用,因为使文件可执行,单击该文件,然后运行..只说需要root访问权限。

sudo sh vmwareplayer.txt(重命名以使其更短)

不知何故我知道它sudo的作用是什么,但它的sh作用是什么?没有它,它会显示“未找到 vmwareplayer.txt”。对于捆绑文件,为什么它以 .txt 结尾?

答案1

sh 代表“shell”,shell 是老式的类 Unix 命令行解释器。解释器是一种执行用编程或脚本语言编写的特定指令的程序。所以基本上你说的是“为我执行那个文件”。

您必须了解,Linux 实际上并不会查看文件扩展名来确定文件(或程序)是什么。因此,只要该文件的内容以 sh 解释器可以理解的方式编写,它就可以工作。但只是为了可读性,这些文件通常被赋予 .sh 扩展名,我不知道开发人员在给该文件赋予 .txt 扩展名时是怎么想的。

答案2

在 Ubuntu 中,sh或者/bin/sh仅指向dash.sh应该运行默认命令解释器,它dash适用于 Ubuntu。1 dash指的是 Debian Almquist shell。

shell 是系统的命令行解释器。还有其他几种 shell,例如、bash等等。以下是手册页的简短摘录: cshzshdash

 The shell is a command that reads lines from either a file or the termi‐
 nal, interprets them, and generally executes other commands.  It is the
 program that is running when a user logs into the system (although a user
 can select a different shell with the chsh(1) command).  The shell imple‐
 ments a language that has flow control constructs, a macro facility that
 provides a variety of features in addition to data storage, along with
 built in history and line editing capabilities.  It incorporates many
 features to aid interactive use and has the advantage that the interpre‐
 tative language is common to both interactive and non-interactive use
 (shell scripts).  That is, commands can be typed directly to the running
 shell or can be put into a file and the file can be executed directly by
 the shell.

关于 Linux shell 的教程有很多,你可以从这个开始维基百科文章

回到你的问题,如果你写了sh file,就会为你dash执行file

答案3

我相信之前的所有回复者都没有回答你问 G. 的问题,所以我会尝试回答。sh在执行程序时插入,正如你提到的,在非交互式子shell。非交互式 shell 的行为有所不同(例如初始化) 来自您运行程序时所使用的标准交互式 shell。

老实说,我不知道这有什么实际效果。正如您所注意到的,sh vmwareplayer.txt通常能够在同一文件夹中执行某些操作,而简单地键入vmwareplayer.txt通常则不行。这与 shell 环境有关;它不是 shell 或子 shell 本身的任何固有特性。当然,您可以直接以 root 身份在当前目录中执行程序:sudo ./vmwareplayer.txt。根据我的经验,这总是和一样有效sudo sh vmwareplayer.txt。我希望有人能来解释为什么子 shell 有时是可取的。

答案4

sh实用程序是一个命令语言解释器/命令,它执行从命令行字符串、标准输入或指定文件读取的命令。该应用程序确保要执行的命令以 Shell 命令语言中描述的语言表达。

例如:

以下从字符串执行 shell 命令: sh -c "cat myfile.txt" 即执行命令--cat myfile.txt

请参阅以下链接以获得深入解释:http://pubs.opengroup.org/onlinepubs/009695399/utilities/sh.html

相关内容