bash脚本在条件执行后无法找到源文件

时间:2015-03-04 07:29:46

标签: bash shell makefile

我有一个bash文件显然适用于其他人,但不适用于我的计算机,我正在试图找出原因。有一个if语句可以检查文件是否存在,如果存在,它将获取它。

if [ -e "setenv.sh" ]; then 
    source setenv.sh
fi 

问题是,在条件执行后,它会给出一条错误消息,指出找不到该文件。我必须进入每个make脚本并使用文件的绝对地址,这非常烦人。在脚本开头有一个#!/bin/bashls -l 'which sh'给出了/bin/sh -> bash

2 个答案:

答案 0 :(得分:0)

描述“适用于他人但不适合我”指向脚本之外的属性:环境。特别是,如果源文件名不包含斜杠,source(及其名称清除.)会在PATH中指定的目录中查找要提供的文件。因此,要解决此问题,请在.的末尾添加PATH,但要注意安全后果(有关详细信息,请向您最喜爱的搜索引擎询问点和路径)。

一般来说,编写PATH的内容是错误的脚本创作。如果您是一名彻底的软件工程师,我会联系脚本编写者并告诉他们这个错误。是的,在.中要求PATH是一个主要错误。

答案 1 :(得分:0)

我假设您的setenv.sh文件与您运行的脚本位于同一目录中。否则,正如Jens指出的那样,你的环境可能有问题

此外,在shell脚本中获取文件不会影响您的shell;只是它启动的子shell。我假设你正在运行一个setenv脚本;这意味着您想要设置某种环境变量?