在linux中运行sh文件时,为什么必须运行.name.sh?

在linux中运行sh文件时,为什么必须运行.name.sh?,第1张

概述我有一个名为x.sh的文件,我想执行它.如果我跑: x.sh 然后我得到: x.sh: command not found 如果我跑: ./x.sh 然后它运行正常.为什么我必须首先输入./? 因为默认情况下当前目录不在PATH环境变量中,所以只在PATH指定的目录内搜索没有路径限定的可执行文件.您可以通过添加更改此行为.到PATH结束,但这不常见,你只会习惯这种UNIX主义. 这背后的想法是,如 我有一个名为x.sh的文件,我想执行它.如果我跑:

x.sh

然后我得到:

x.sh: command not found

如果我跑:

./x.sh

然后它运行正常.为什么我必须首先输入./?

解决方法 因为默认情况下当前目录不在PATH环境变量中,所以只在PATH指定的目录内搜索没有路径限定的可执行文件.您可以通过添加更改此行为.到PATH结束,但这不常见,你只会习惯这种UNIX主义.

这背后的想法是,如果首先在当前目录内搜索可执行文件,则恶意用户可以在其主目录中放入名为例如可执行文件的可执行文件. ls或grep或其他常用命令,欺骗管理员使用它,可能具有超级用户权限.另一方面,如果你把这个问题感觉不大.在PATH的末尾,因为在那种情况下首先搜索系统目录.

但是:我们的恶意用户仍然可以创建他的危险脚本,这些脚本被称为常用命令的常见错别字,例如: sl for ls(protip:将它绑定到Steam Locomotive,你不会被欺骗:D).

所以你会发现,如果你输入一个没有路径限定条件的可执行文件名称,那么保持安全仍然会更好,你确定你正在从系统目录中运行一些东西(因此可以说是安全的).

总结

以上是内存溢出为你收集整理的在linux中运行sh文件时,为什么必须运行./name.sh?全部内容,希望文章能够帮你解决在linux中运行sh文件时,为什么必须运行./name.sh?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/1021399.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存