<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=API%2Fshell%2Fzh</id>
	<title>API/shell/zh - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://ocr.michiyo.me/w/index.php?action=history&amp;feed=atom&amp;title=API%2Fshell%2Fzh"/>
	<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=API/shell/zh&amp;action=history"/>
	<updated>2026-08-24T15:14:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://ocr.michiyo.me/w/index.php?title=API/shell/zh&amp;diff=1047&amp;oldid=prev</id>
		<title>imported&gt;OCDoc Import: Imported from legacy OpenComputers documentation at ocdoc.cil.li</title>
		<link rel="alternate" type="text/html" href="https://ocr.michiyo.me/w/index.php?title=API/shell/zh&amp;diff=1047&amp;oldid=prev"/>
		<updated>2026-08-24T08:08:27Z</updated>

		<summary type="html">&lt;p&gt;Imported from legacy OpenComputers documentation at ocdoc.cil.li&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Shell API =&lt;br /&gt;
&lt;br /&gt;
此API提供了与shell相关的功能，例如shell的当前工作目录、程序查找路径和别名。&lt;br /&gt;
&lt;br /&gt;
* `shell.getAlias(alias: string): string`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;获取指定别名的值（若存在），若不存在此别名则返回`nil`。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.setAlias(alias: string, value: string or nil)`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;定义一条新别名，或更新一条现存别名。传递`nil`作为参数即可移除一条别名。请注意别名不仅限于程序名，也可以包含参数。例如，默认情况下`view`就是`edit -r`的别名。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.aliases(): function`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;返回一个迭代器，遍历所有已知别名。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.getWorkingDirectory(): string`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;获取指向当前工作目录的路径。此函数为`os.getenv(&amp;quot;PWD&amp;quot;)`的别名。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.setWorkingDirectory(dir: string)`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;设定当前工作目录。此函数为`os.setenv(&amp;quot;PWD&amp;quot;, dir)`的经校验版本。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.getPath(): string`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;获取`shell.resolve`使用的搜索路径。此结果可能包含多条路径，中间用冒号(`:`)隔开。  &lt;br /&gt;
此函数为 `os.getenv(&amp;quot;PATH&amp;quot;)` 的别名。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.setPath(value: string)`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;设定搜索路径。请注意此操作将会覆盖当前的搜索路径。要添加新路径，请执行：`shell.setPath(shell.getPath() .. &amp;quot;:/some/path&amp;quot;)`  &lt;br /&gt;
此函数为`os.setenv(&amp;quot;PATH&amp;quot;, value)`的别名。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.resolve(path: string[, ext: string]): string`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;尝试“解析”一条路径，可选是否同时检查带指定后缀的文件，此时`path`中只应当包含**文件名**（不含后缀）。  &lt;br /&gt;
此函数会首先在工作目录中进行查找，然后查找搜索路径的所有条目（参见 `getPath`/`setPath` ）。  &lt;br /&gt;
若不存在名称与给定值精确匹配的文件，且给出了扩展名，此函数还会检查是否存在名称为给定名称加上给定后缀的文件，即 `path .. &amp;quot;.&amp;quot; .. ext`。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.execute(command: string, env: table[, ...]): boolean ...`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;运行给定命令。此函数会运行默认shell（参见`os.getenv(&amp;quot;SHELL&amp;quot;)`）并将命令作为参数传递给它。  &lt;br /&gt;
`env`是提供给shell使用的环境表，以备你希望在沙盒环境中运行程序，或者防止程序污染调用者的命名空间。额外参数会被直接传递给基于给定命令启动的第一个程序，因此你可以向程序传递非字符串值。  &lt;br /&gt;
函数的返回值类似于`pcall`和`coroutine.resume`：第一个返回值为布尔值，代表了执行是否成功。当发生错误时，第二个返回值为详细报错信息。其他情况下，第一条之后的返回值均为指定程序结束后返回的结果。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* `shell.parse(...): table, table`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;让程序用于解析自身参数的实用性方法。它将会返回两个表，第一个表中包含了“普通”参数，第二个表中包含了“选项”。  &lt;br /&gt;
选项的开头有`-`进行标记，所有的选项都只能为单个字母长，因为一个`-`后面跟着多个字母会被认为是多个选项。以两个破折号开头的选项不会被拆分，也就可以有多个字符长。并且，双破折号的选项还可以使用等于号赋值。下列样例均假定脚本`program`使用`local args, ops = shell.parse(...)`解析选项。  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例1：`program`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# `args`为`{}`  &lt;br /&gt;
# `ops`为`{}`  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例2：`program -abC -d arg1 arg2`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# `args`为`{&amp;quot;arg1&amp;quot;, &amp;quot;arg2&amp;quot;}`  &lt;br /&gt;
# `ops`为`{a=true,b=true,C=true,d=true}`  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例3：`program -abC --dog arg1 arg2`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# `args`为`{&amp;quot;arg1&amp;quot;, &amp;quot;arg2&amp;quot;}`  &lt;br /&gt;
# `ops`为`{a=true,b=true,C=true,dog=true}`  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
例4：`program -abC --dog=foo arg1 arg2`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# `args`为`{&amp;quot;arg1&amp;quot;, &amp;quot;arg2&amp;quot;}`  &lt;br /&gt;
# `ops`为`{a=true,b=true,C=true,dog=&amp;quot;foo&amp;quot;}`  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在下一个样例中，请注意 `dog` 前面的单破折号。这使得后续所有字符均被解析为单独字符。&lt;br /&gt;
例5：`program -abC -dog=foo arg1 arg2`&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# `args`为`{&amp;quot;arg1&amp;quot;, &amp;quot;arg2&amp;quot;}`  &lt;br /&gt;
# `ops`为`{a=true,b=true,C=true,d=true,g=true,[&amp;quot;=&amp;quot;]=true,f=true,o=true}`  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== 目录 ==&lt;br /&gt;
&lt;br /&gt;
{{:API/contents/zh}}&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;OCDoc Import</name></author>
	</entry>
</feed>