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

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

sh: 1: source: not found

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


当前回答

源代码是内置的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

其他回答

在Bourne shell(sh)中,使用。命令获取文件的源

. filename

在某些操作系统/环境(Mac OS, Travis-CI, Ubuntu,至少),这必须是:

. ./filename

(以下是Adrien Joly的评论)

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

source是bash内置命令,因此要执行source命令,您可以以Root用户登录。

sudo - s 源。/ filename.sh

$ls -l `which sh`
/bin/sh -> dash

$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]

$ls -l `which sh`
/bin/sh -> bash

那就好了

Bourne shell (sh)使用PATH定位源<文件>。如果你试图获取的文件不在你的路径中,你会得到错误“文件未找到”。

试一试:

source ./<filename>