在 FreeBSD 9.3 上找不到点命令 (.)
dot command (.) not found on FreeBSD 9.3
在 FreeBSD 9.3
上,我尝试在 root
用户 (root@myserver#) 上使用点命令 (.
),但收到以下错误:
> .: Command not found.
但是,作为“非 root”(#) 用户,它工作正常!这是怎么回事?
$PATH - 我指向 /root,现在,我在 ec2 freebsd 9.3 上测试点命令 (.) 是有效的,但在 virsualbox 上找不到构建服务器目标
我使用 'su username_root_login' 解决了问题,点命令 (.) 工作得很好。
.
("dot") 命令内置于 Bourne shell (sh
) 和派生自它的 shell 中 (bash
、ksh
、zsh
等)。它从指定文件读取并执行命令。与将文件作为脚本执行不同,.
在当前 shell 进程的上下文中执行命令。在某些 shell 中,source
等同于 .
.
csh
及其衍生物 tcsh
do not 具有 .
作为内置命令。他们确实有一个等效的 source
命令——但这不太可能是解决方案,因为 . filename
或 source filename
在当前 shell 中执行命令 process,命令必须对当前 shell 有效。 sh
和 csh
对于一些简单的命令是相似的,但对于任何复杂的东西(if
语句、循环、某些类型的 I/O 重定向等)它们实现了不兼容的语言。如果您有一个脚本要使用 . filename
从 sh
或 bash
执行,您将无法从 csh
或 tcsh
执行,即使通过使用 source filename
.
您收到错误消息的原因可能是 root
帐户的默认 shell 是 /bin/csh
或 /bin/tcsh
(我认为这是基于 BSD 的系统的典型情况)。您自己的非 root
帐户可能默认使用一些基于 Bourne 的 shell。您可以通过在提示符下键入 echo $SHELL
来了解您的默认值 shell。
在我的系统上,当我尝试从 csh
或 tcsh
提示符下使用 . filename
时收到不同的错误消息,但您可能有一个行为不同的版本。
这就解释了为什么会出现错误。它没有告诉您如何修复它,但您还没有真正为我们提供足够的信息。如果您确实需要源文件,则必须 运行 与该文件中的命令兼容的 shell。例如,您可能需要从根 shell 提示符下执行 /bin/bash
,然后使用 .
命令。但是没有更多信息,我不知道这是否有意义。
您要获取什么脚本?它应该做什么?您确定它需要采购而不是执行吗?
在 FreeBSD 9.3
上,我尝试在 root
用户 (root@myserver#) 上使用点命令 (.
),但收到以下错误:
> .: Command not found.
但是,作为“非 root”(#) 用户,它工作正常!这是怎么回事?
$PATH - 我指向 /root,现在,我在 ec2 freebsd 9.3 上测试点命令 (.) 是有效的,但在 virsualbox 上找不到构建服务器目标
我使用 'su username_root_login' 解决了问题,点命令 (.) 工作得很好。
.
("dot") 命令内置于 Bourne shell (sh
) 和派生自它的 shell 中 (bash
、ksh
、zsh
等)。它从指定文件读取并执行命令。与将文件作为脚本执行不同,.
在当前 shell 进程的上下文中执行命令。在某些 shell 中,source
等同于 .
.
csh
及其衍生物 tcsh
do not 具有 .
作为内置命令。他们确实有一个等效的 source
命令——但这不太可能是解决方案,因为 . filename
或 source filename
在当前 shell 中执行命令 process,命令必须对当前 shell 有效。 sh
和 csh
对于一些简单的命令是相似的,但对于任何复杂的东西(if
语句、循环、某些类型的 I/O 重定向等)它们实现了不兼容的语言。如果您有一个脚本要使用 . filename
从 sh
或 bash
执行,您将无法从 csh
或 tcsh
执行,即使通过使用 source filename
.
您收到错误消息的原因可能是 root
帐户的默认 shell 是 /bin/csh
或 /bin/tcsh
(我认为这是基于 BSD 的系统的典型情况)。您自己的非 root
帐户可能默认使用一些基于 Bourne 的 shell。您可以通过在提示符下键入 echo $SHELL
来了解您的默认值 shell。
在我的系统上,当我尝试从 csh
或 tcsh
提示符下使用 . filename
时收到不同的错误消息,但您可能有一个行为不同的版本。
这就解释了为什么会出现错误。它没有告诉您如何修复它,但您还没有真正为我们提供足够的信息。如果您确实需要源文件,则必须 运行 与该文件中的命令兼容的 shell。例如,您可能需要从根 shell 提示符下执行 /bin/bash
,然后使用 .
命令。但是没有更多信息,我不知道这是否有意义。
您要获取什么脚本?它应该做什么?您确定它需要采购而不是执行吗?