Shell脚本源:未找到

时间:2014-05-07 00:58:21

标签: bash shell

我正在运行以下简单脚本来测试代码块:

#!/bin/bash                                                                                                                         

# Load nvm and install latest production node                                                                                       
source $HOME/.nvm/nvm.sh
nvm install v0.10.12
nvm use v0.10.12

如果文件名是test.sh并带有上面的代码,我会收到以下错误:

test.sh: 5: test.sh: source: not found
test.sh: 6: test.sh: nvm: not found
test.sh: 7: test.sh: nvm: not found

根据我在SO中的评论,似乎脚本的错误源于==>来源:未找到。当我在CLI输入此代码时,代码工作正常。出于某种原因,我无法通过shell脚本执行此代码。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:5)

您的shebang line说Bash,但症状表明您使用sh运行它,但没有source命令。从表面上看,将source更改为一个点就可以解决问题,但当然,如果源文件包含任何Bashisms,它将会失败(可能更巧妙,结果不正确但没有错误消息)。

#!/bin/sh                                      
# Load nvm and install latest production node
. $HOME/.nvm/nvm.sh
nvm install v0.10.12
nvm use v0.10.12

通常,最好将脚本标记为可执行文件,让操作系统通过shebang机制选择正确的解释器;那么你不必记住脚本文件是否包含Bash命令或sh命令或Python代码或编译代码或其他什么,也不要注意这是否从一个版本变为另一个版本。

所以而不是

sh script
你会做的

chmod +x ./script # the first time
./script

一旦权限正确,只需要第二行。还有一些小的额外警告,这就是为什么一些忙碌的开发人员有时会为最直接的问题提供最简单的指示。

答案 1 :(得分:0)

  

chmod + x $ HOME / .nvm / nvm.sh

     

然后

     

sh $ HOME / .nvm / nvm.sh或。 $ HOME / .nvm / nvm.sh