在FreeBSD 9.3上找不到dot命令(。)

时间:2015-01-26 03:00:55

标签: linux shell freebsd

FreeBSD 9.3上,我尝试在.用户(root @ myserver#)上使用了dot命令(root),但收到了以下错误:

> .: Command not found.

但是,作为'非root用户'(#)用户,它运行正常!发生了什么事?

$ PATH - 我指向/ root现在,我在ec2上测试freebsd 9.3 dot命令(。)是可行的,但在virsualbox上构建服务器目标无法找到 谢谢高级!

我通过使用'su username_root_login'来解决,并且点命令(。)完美地工作。

所以我会关闭这个问题谢谢大家解决我的问题+语法格式

1 个答案:

答案 0 :(得分:1)

.(“点”)命令内置于Bourne shell(sh)和从中派生的shell(bashksh,{{1等等)。它从指定的文件中读取和执行命令。与将文件作为脚本执行不同,zsh在当前shell进程的上下文中执行命令。在某些shell中,.相当于source

.及其派生csh tcsh作为内置命令。它们确实有一个等效的.命令 - 但这不太可能是一个解决方案,因为source. filename执行当前shell进程中的命令 ,并且命令必须对当前shell有效。 source filenamesh对于一些简单的命令是相似的,但对于任何复杂的(csh语句,循环,某些I / O重定向等),它们都实现了不兼容的语言。如果您要使用ifshbash执行脚本,则无法从. filenamecsh执行,甚至使用tcsh

您可能收到错误,因为source filename帐户的默认shell是root/bin/csh(我认为这是基于BSD的系统的典型情况)。您自己的非/bin/tcsh帐户可能有一些基于Bourne的shell作为其默认值。通过在提示符下键入root,您可以找到默认shell的内容。

在我的系统上,当我尝试使用echo $SHELL. filename提示符中的csh时,我收到了不同的错误消息,但您的版本可能会有不同的行为。

这就解释了为什么你会收到错误。它没有告诉你如何解决它,但你还没有给我们足够的信息。如果您确实需要获取文件,则必须运行与该文件中的命令兼容的shell。您可能需要从root shell提示符执行,例如tcsh,然后使用/bin/bash命令。但是没有更多的信息,我无法分辨这是否有意义。

您尝试使用哪种脚本?该怎么办?你确定它需要采购而不是执行吗?