gpt4 book ai didi

linux - 在linux下运行sh文件,为什么要运行./name.sh?

转载 作者:IT王子 更新时间:2023-10-29 00:52:27 31 4
gpt4 key购买 nike

我有一个名为 x.sh 的文件,我想执行它。如果我运行:

x.sh

然后我得到:

x.sh: command not found

如果我运行:

./x.sh

然后就可以正常运行了。为什么我必须先输入 ./?

最佳答案

因为默认情况下当前目录不在PATH环境变量中,没有路径限定的可执行文件只会在PATH指定的目录中搜索。您可以通过将 . 添加到 PATH 的末尾来更改此行为,但这不是常见的做法,您只会习惯这种 UNIXism。

这背后的想法是,如果首先在当前目录中搜索可执行文件,则恶意用户可以在他的主目录中放置一个名为 e.g. 的可执行文件。 lsgrep 或其他一些常用命令,诱使管理员使用它,可能具有 super 用户权限。另一方面,如果将 . 放在 PATH 的末尾,这个问题就不太明显了,因为在这种情况下,首先搜索系统目录。

但是:我们的恶意用户仍然可以创建他的危险脚本,这些脚本被命名为常用命令的常见拼写错误,例如sl for ls(提示:将其绑定(bind)到 Steam Locomotive 无论如何你都不会被欺骗 :D)。

所以您会发现,如果您键入一个没有路径限定的可执行文件名称,您确定您正在从系统目录中运行某些东西(因此应该是安全的)。

关于linux - 在linux下运行sh文件,为什么要运行./name.sh?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7508323/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com