我有一个使用sh
shell的脚本。我在使用source
命令的行中出错。我的source
shell中似乎没有sh
。
如果我明确尝试从shell运行source
,我会得到:
sh: 1: source: not found
我应该以某种方式安装“来源”吗?我的sh
版本有错吗?
答案 0 :(得分:97)
在Bourne shell(sh)中,使用。命令来源文件
. filename
答案 1 :(得分:92)
/bin/sh
通常是其他一些试图模仿The Shell的shell。许多发行版使用/bin/bash
sh
,它支持source
。但是,在Ubuntu上,使用的/bin/dash
不支持source
。大多数shell使用.
而不是source
。如果您无法编辑脚本,请尝试更改运行它的shell。
答案 2 :(得分:42)
$ls -l `which sh`
/bin/sh -> dash
$sudo dpkg-reconfigure dash #Select "no" when you're asked
[...]
$ls -l `which sh`
/bin/sh -> bash
然后就可以了
答案 3 :(得分:18)
内置source
是一种基础。请将其简写为.
。
<强> e.g。强>
. $FILE
# OR you may need to use a relative path (such as in an `npm` script):
. ./$FILE
答案 4 :(得分:7)
source
命令内置于一些shell中。如果您有脚本,则应指定在第一行使用的shell,例如:
#!/bin/bash
答案 5 :(得分:7)
发生此问题是因为jenkins Execute Shell通过其/ bin / sh
运行脚本因此,/ bin / sh不知道&#34; source&#34;
您只需在jenkins
中的Execute Shell顶部添加以下行#!/bin/bash
答案 6 :(得分:1)
source 是一个bash内置命令,因此要执行source命令,您可以以Root身份登录。
sudo -s
source ./filename.sh
答案 7 :(得分:0)
我在Ubuntu上找到了一个gnu Makefile,(其中/ bin / sh - &gt; bash)
我需要使用。命令,以及使用./前缀指定目标脚本(参见下面的示例)
源代码在这个实例中不起作用,不知道为什么因为它应该调用/ bin / bash ..
我的SHELL环境变量也设置为/ bin / bash
test:
$(shell . ./my_script)
请注意,此示例不包含制表符;不得不格式化堆栈交换。
答案 8 :(得分:0)
当我尝试从#Jenkins execute shell调用 source 命令时遇到了此错误。
source profile.txt
要么
source profile.properties
要使用源的替换
. ./profile.txt
要么
. ./profile.properties
注意:两个点(。)之间有一个空格
答案 9 :(得分:-1)
Bourne shell(sh)使用PATH在source <file>
中找到。如果您尝试提供的文件不在您的路径中,则会收到错误文件&#39;。
尝试:
source ./<filename>
答案 10 :(得分:-1)
在Ubuntu上,我使用而不是使用sh scriptname.sh来运行文件。 scriptname.sh,它起作用了!
我文件的第一行包含:
.name_of_script.sh
使用此命令运行脚本
"."
答案 11 :(得分:-2)
这可能对您有所帮助,我收到此错误是因为我尝试使用命令.profile
重新加载. .profile
并且语法错误