为什么我只能从父目录运行 .sh 文件,而不能从子目录运行

ber*_*436 3 linux directory directory-structure

我注意到这不起作用:

/tomcatDirectory/bin $ startup.sh //command not found
Run Code Online (Sandbox Code Playgroud)

但这确实有效

/tomcatDirectory $ bin/startup.sh
Run Code Online (Sandbox Code Playgroud)

我习惯了 Windows。对我来说,我无法从其工作目录运行程序,只能从父文件夹运行程序,这似乎违反直觉。

这里发生的事情的大局是什么?

Mat*_*teo 6

当前目录(即.)不在您的路径中。试试

./startup.sh
Run Code Online (Sandbox Code Playgroud)

你可以检查你的路径

echo ${PATH}
Run Code Online (Sandbox Code Playgroud)

可以将当前目录 ( .)添加到您的路径中,但这被认为是一种风险(尤其.是在其他目录之前):键入命令时,shell 将首先尝试在当前目录中执行它。这将执行那里的内容而不是默认的内容

总结:只需在当前目录中启动可执行文件./即可。