如何在 *nix 中找到点命令 `.` 的帮助?

atu*_*ano 22 linux unix

我需要找到点命令的帮助,.例如. ./my_script.sh(我的意思是第一点。)

我已经尝试使用man .and查找手册页man \.。如何显示说明命令使用的手册页.

Kam*_*ski 79

首先你应该调用type .,你可能会得到类似的东西:

. is a shell builtin
Run Code Online (Sandbox Code Playgroud)

内置函数是 shell 的一部分,它们没有自己的手册页。不过,其中一些似乎有它们,例如echo是 Bash 中的内置程序,但很可能/bin/echo在您的系统中有一个单独的可执行文件,在这种情况下man echo指的是后者。这两个echos 可能不是严格等价的。

您的 shell 可能会通过helpbuiltin提供有关任何 builtin 的信息;尝试help helphelp type最后:

help .
Run Code Online (Sandbox Code Playgroud)

内置函数也可能列在您的 shell 手册页中。例如,(在我的Debian)的Bash内建在直接覆盖man bash,但是对于岩组建宏man zsh告诉我跑man zshbuiltins。一般来说,shell 可能会也可能不会解释它们的内置函数。

  • +1 用于使用 `type .` 来证明某些命令是 shell 内置命令。 (8认同)
  • +1 表示 `.` 是内置的 shell,这应该标记为答案,因为 OP 询问`如何为 . 在 *nix 中?`。 (7认同)
  • 在大多数 Debian 上,Bash 内置程序也被提取到 `bash-builtins(1)` 手册页,这是一个更方便的大小。 (2认同)

TOO*_*GAM 24

尝试使用man shorman bash或手册页来了解您正在使用的任何 shell。(也许man $SHELL。)

这正式不称为“点”命令,而是source命令。搜索这个词source可能会有所帮助。

例如,bash 手册页(搜索“每个内置命令”),您将很快找到文档。

至于解释用途,我可以在这里做。我将把它称为source命令,认识到当您使用某些 shell 时它可以缩写为一个句点,而对于某些 shell,该命令可能需要(因为 dot 可能被识别,但整个单词source可能无法识别)是)。

如果您使用该source命令,您的 shell 将从脚本文件中读取每一行,并尝试执行它。您需要对该文件的“读取”权限。(您是否具有“执行”权限并不重要。)如果您修改了一个变量,这很容易影响您当前的 shell。

另一方面,如果您只是尝试执行该文件,那么您的 shell 将要求操作系统处理此请求。这将需要“执行”权限。(在某些系统上,比如 OpenBSD,你不需要“读”权限。在其他系统上,包括许多 Unix 变体,你需要。)文件可能需要以适当的头(例如,#!/bin/sh)开头,以便操作系统将其识别为脚本文件。操作系统将执行所请求的 shell 的副本,并告诉该 shell 运行脚本的内容。如果 shell 环境发生变化(例如,变量获得新值,工作目录发生变化(使用 cd),文件描述符被重定向(使用 exec)等),只会影响调用脚本的子shell,不能修改调用脚本文件的父shell中的环境。

  • 它只是 bash 中的 `source`。在 POSIX 规范中,它被称为“点命令”(并且不支持 `source` 别名)。 (15认同)

djs*_*ide 6

没有人提到它,因为它经常被遗忘。

您最大的线索将来自有用的命令whatis

tim@musha ~ $ whatis .
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis source
builtins (1)         - bash built-in commands, see bash(1)
tim@musha ~ $ whatis bash
bash (1)             - GNU Bourne-Again SHell
tim@musha ~ $ whatis lynx
lynx (1)             - a general purpose distributed information browser for the World Wide Web
tim@musha ~ $ whatis linux
linux: nothing appropriate.
tim@musha ~ $ whatis whatis
whatis (1)           - display one-line manual page descriptions
Run Code Online (Sandbox Code Playgroud)

编辑:

有些人在评论中指出这不在某些发行版中 - 也许它是一个可安装的包,或者启用了一些方式 - 我在 gentoo 中默认拥有它;)

它包括精彩的 which - 它告诉您调用哪个可执行文件,以及 whereis 为您提供您命名的可执行文件的所有路径,以及它的手册页(如果它存在于多个路径中)。

  • `whatis .` 在 Ubuntu 16.04 上不返回任何内容 (4认同)
  • 啊,来自它自己的手册页:*“whatis - 显示一行手册页描述。”* 所以它似乎是一个非常非常简短的 man 版本。 (2认同)