我有一个脚本,使用sh shell。我在使用source命令的行中得到一个错误。它似乎源不包括在我的sh shell。

如果我显式地尝试从shell运行source,我得到:

sh: 1: source: not found

我是否应该安装“source”?我的sh版本是否错误?


当前回答

/bin/sh通常是试图模仿shell的其他shell。许多发行版使用/bin/bash作为sh,它支持source。但是在Ubuntu上,使用的是不支持source的/bin/dash。大多数shell使用。而不是来源。如果无法编辑脚本,请尝试更改运行脚本的shell。

其他回答

源代码是内置的bashism。简单地写成。代替。

e.g.

. $FILE

# OR you may need to use a relative path (such as in an `npm` script):

. ./$FILE

https://wiki.ubuntu.com/DashAsBinSh#source

在Ubuntu上,我没有使用sh scriptname.sh来运行文件,而是使用。Scriptname.sh,它工作了! 我的文件的第一行包含: # !/bin/bash

使用该命令运行脚本

.name_of_script.sh

当我试图从#Jenkins执行shell调用源命令时,我遇到了这个错误。

源profile.txt 或 源profile.properties

替换源命令是使用,

。。/ profile.txt 或 。。/ profile.properties

注意:两个点之间有一个空格。

这可能会帮助你,我得到这个错误,因为我试图用命令. .profile重新加载我的.profile,它有一个语法错误

发生此问题是因为jenkins Execute Shell通过其/bin/sh运行脚本

因此,/bin/sh不知道“源”

您只需要在jenkins中Execute Shell的顶部添加下面的行

#!/bin/bash