我有一个bash文件显然适用于其他人,但不适用于我的计算机,我正在试图找出原因。有一个if
语句可以检查文件是否存在,如果存在,它将获取它。
if [ -e "setenv.sh" ]; then
source setenv.sh
fi
问题是,在条件执行后,它会给出一条错误消息,指出找不到该文件。我必须进入每个make脚本并使用文件的绝对地址,这非常烦人。在脚本开头有一个#!/bin/bash
,ls -l 'which sh'
给出了/bin/sh -> bash
。
答案 0 :(得分:0)
描述“适用于他人但不适合我”指向脚本之外的属性:环境。特别是,如果源文件名不包含斜杠,source
(及其名称清除.
)会在PATH
中指定的目录中查找要提供的文件。因此,要解决此问题,请在.
的末尾添加PATH
,但要注意安全后果(有关详细信息,请向您最喜爱的搜索引擎询问点和路径)。
一般来说,编写PATH
的内容是错误的脚本创作。如果您是一名彻底的软件工程师,我会联系脚本编写者并告诉他们这个错误。是的,在.
中要求PATH
是一个主要错误。
答案 1 :(得分:0)
我假设您的setenv.sh
文件与您运行的脚本位于同一目录中。否则,正如Jens指出的那样,你的环境可能有问题
此外,在shell脚本中获取文件不会影响您的shell;只是它启动的子shell。我假设你正在运行一个setenv
脚本;这意味着您想要设置某种环境变量?