在sh shell中找不到source命令。

289

我有一个使用sh shell的脚本。在使用source命令的那一行出现了错误,似乎我的sh shell中没有包含source命令。

如果我在shell中明确尝试运行source,我会得到以下错误:

sh: 1: source: not found

我应该以某种方式安装“源代码”吗? 我的sh版本有问题吗?


2
可以合理地认为,支持“source”的Shell是一种“错误版本”。 - William Pursell
3
此外,错误信息 source: not found 表示 source 命令已经被正确执行,但它应该读取的文件不存在。 - Simon Richter
7
由于“source”是shell的一个特性,因此不可能“安装”它。它不能作为外部命令实现。 - Christopher Schultz
14个回答

0

我在Ubuntu上的一个gnu Makefile中发现了以下内容(其中/bin/sh -> bash)

我需要使用 . 命令,并在目标脚本前加上 ./ 前缀来指定目标脚本(请参见下面的示例)

在这种情况下,source 命令无法正常工作,不确定为什么,因为它应该调用 /bin/bash..

我的 SHELL 环境变量也设置为 /bin/bash

test:
    $(shell . ./my_script)

请注意,此示例不包括制表符;必须为堆栈交换格式化。

0
在Ubuntu上,我使用了“. scriptname.sh”而不是“sh scriptname.sh”来运行文件,它起作用了!我的文件的第一行包含:#!/bin/bash 使用此命令运行脚本。
.name_of_script.sh

2
这个问题已经被多次回答过了。如果您要在这种情况下添加新的答案,请提供更多信息。 - Nico Haase

-3

这可能会对你有所帮助,我遇到了这个错误是因为我尝试使用命令. .profile重新加载我的.profile文件,但它存在语法错误。


-10
Bourne shell(sh)使用PATH来定位source <file>中的文件。如果您要源代码的文件不在您的路径中,则会出现“找不到文件”的错误。

尝试:

source ./<filename>

8
这篇文章说的是 sh: 1: source: not found 而不是 文件未找到 - Cristian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接