加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 23:55:29 所属栏目:Linux 来源:网络整理
导读:我有一个名为x.sh的文件,我想执行它.如果我跑: x.sh 然后我得到: x.sh: command not found 如果我跑: ./x.sh 然后它运行正常.为什么我必须首先输入./? 解决方法 因为默认情况下当前目录不在PATH环境变量中,所以只在PATH指定的目录内搜索没有路径限定的可
我有一个名为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).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读