运行名称前不带 ./ 的脚本

运行名称前不带 ./ 的脚本

我正在运行一个非常复杂的脚本,它会更改目录并运行许多其他命令。所有这些命令都使用“scriptname”运行,当我从终端执行主脚本时,它运行良好。但是,有时我必须 ssh 到服务器并从那里运行主脚本,它会失败,因为每个命令之前没有 ./ 。

我不想遍历所有脚本和可执行文件并将 ./ 添加到命令中,那么还有其他方法可以解决此问题吗?

答案1

有多种方法可以更改此行为,包括添加./到 PATH 环境变量,但这会给您的环境带来严重的安全风险。您的脚本编写方式确实是错误的,正确的解决方案是检查所有脚本并修复本地脚本的调用方式。这是唯一正确的修复方法,不会带来额外的问题并为您带来安全问题。我知道这不是你的事通缉听到,但咬紧牙关并正确行事。

答案2

如果您的脚本恰好位于 /opt/housekeeping/bin 下,我建议您添加

export PATH=$PATH:/opt/housekeeping/bin  

到您的 .bash_profile 或 .profile 或您使用的任何登录脚本,并确保在这些脚本上设置 755 权限。

答案3

您可以为脚本创建别名:

alias scriptfile="./scriptfile"

相关内容