sudo:源:以 sudo 身份执行 tcl 时未找到命令

sudo:源:以 sudo 身份执行 tcl 时未找到命令

我有一个 test.tcl(具有所有权限),其中包含以下内容-

#!/usr/bin/tclsh    
puts "hello, world"

这就是我执行 tcl 脚本的方式-

sudo source /opt/test.tcl

我得到的输出是-

sudo: source: command not found

但是我使用命令检查了源和 sudo 的可用性whereis,并且它们可用-

$ whereis sudo
sudo: /usr/bin/sudo /usr/share/man/man8/sudo.8.gz
$ whereis source
source: /usr/share/man/man1/source.1.gz

但是,当我尝试执行 tcl 时

sudo tclsh /opt/test.tcl

我得到了预期的输出-

hello, world

我这里遗漏了什么吗?

答案1

source是 shell 内置命令。shell 找不到它的原因与使用 sudo 时source找不到它的原因相同- 它不是一个命令。您可以使用 shell 内置命令自行检查。cdtype

source执行指定文件的内容在你当前的 shell 中。只要您不需要交互式 shell,并且您当前的 shell 是 tclsh,那就没问题了。阅读这里了解更多信息。

sudo tclsh /opt/test.tcl

可以工作,但是它将在非交互式 shell 中运行。

如果出于某种原因确实需要source该脚本,请确定是否需要特殊权限。如果必须,您可以su以 root 身份运行source该脚本。

此外,您得到的输出$ whereis source

source: /usr/share/man/man1/source.1.gz

似乎是一个man页面。所以那可能没什么用!

相关内容