跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 你们习惯在 Linux 下输路径的时候带 ./ 吗
未分類
2020 年 6 月 29 日

你们习惯在 Linux 下输路径的时候带 ./ 吗

你们习惯在 Linux 下输路径的时候带 ./ 吗

資深大佬 : CivAx 69

比如 cd usr/ 和 cd ./usr/

或者 bash myScript 和 ./myScript

大佬有話說 (47)

  • 資深大佬 : lxk11153

    有时写,有时不写,(我也不知道有木有区别
    感觉这个和一些编程语言写不写语句末尾;有得一比 (我是写的,因为刚接触时就写了,养成习惯了不写看着不完成)

  • 資深大佬 : yeyu123

    没这习惯
    当前目录不会写

  • 資深大佬 : murphyyyy

    是的.习惯…
    因为 windows 上的历史遗留问题….执行 exe 时必须输入./xxx

  • 資深大佬 : garlics

    只有执行 shell 的时候会写

  • 資深大佬 : uxstone

    rm -rf *
    rm -rf ./*

  • 資深大佬 : flyingghost

    非必要的时候还习惯打./ 的同学。。。
    你们不怕.忘记打或者.和 /之间多敲了个空格吗?/狗头

  • 資深大佬 : whywhywhy

    @murphyyyy 哪个 windows。。。

  • 資深大佬 : shiny

    @murphyyyy linux 上也一样,记得是为了安全原因,假设你要 ls,结果当前目录下也有一个 ls。

  • 資深大佬 : love

    @shiny 当前目录下有 ls 为什么会影响 ls 的安全性?

  • 資深大佬 : KyonLi

    @whywhywhy #7 Windows 不是优先执行当前目录下的 exe 吗,当初刚学 Linux 还适应了好长时间./xxx 执行

  • 資深大佬 : KyonLi

    回复错人了,尴尬 应该 @murphyyyy

  • 資深大佬 : k9982874

    必须写,吃过 rm -rf 的亏

  • 資深大佬 : wangkun025

    新手表示,不输入.

  • 主 資深大佬 : CivAx

    @k9982874 #12 你搞不好是我的前同事 你们习惯在 Linux 下输路径的时候带 ./ 吗

  • 資深大佬 : Humorce

    @love 恶意程序也可以命名为 ls

  • 資深大佬 : shiny

    @love 比如发你个文件夹,里面加个恶意程序,命名成 ls。你进去 ls 下就炸了。

  • 資深大佬 : love

    @shiny 你想想可不可能,这是天大的安全 BUG,怎么可能在当前目录搜索可执行文件

  • 資深大佬 : Oktfolio

    我反正是必须写

  • 資深大佬 : Oktfolio

    但是 cd 后面不写

  • 資深大佬 : wtks1

    @love 看环境变量吧,如果把.加进变量里,这种操作就可以实现

  • 資深大佬 : ajax10086

    第一个不写,第二个写

  • 資深大佬 : skinny

    如果有通配符(没有通配符的也要按 tab 补全)必须写,这是有过教训的人才能理解的

  • 資深大佬 : shawnLuo

    跑脚本的时候才会写,其他都是直接路径名

  • 資深大佬 : namaketa

    @uxstone 吃过这个亏的人都会写

  • 資深大佬 : manwei6341

    写

  • 資深大佬 : rubycedar

    @shiny 不是得要./ls 才能执行当前目录下的 ls 程序吗?

  • 資深大佬 : murphyyyy

    @shiny
    @whywhywhy
    @KyonLi
    在 windows powershell 上也是这个原因,是为了安全问题.

    图床地址,Base64 解码~~~~

    aHR0cHM6Ly9pbWd1ci5jb20vYS9jT29ZNmRE

  • 資深大佬 : shiny

    @rubycedar 请阅读上下文

  • 資深大佬 : 27

    @uxstone 这两个有什么区别?

  • 資深大佬 : liuzhiyong

    第一种情况,cd 不会写“./”;第二种情况,执行脚本会写“./”。

  • 資深大佬 : lihongjie0209

    可执行文件不在 PATH 变量中才需要这种写法, 而且是 Linux bash 才有的情况, 在 Windows CMD 下直接使用 xxx.exe 也可以直接运行。

    所以写不写看你用什么 shell, 都是历史遗留问题然后变为习惯了

  • 資深大佬 : yan5990853

    区别还是有的 不带./会查环境变量,可能有时候不是你想要的结果。

  • 資深大佬 : crella

    @lihongjie0209 powershell 要指定.local_app.exe ,不指定的话会报错并提示本目录有 local_app.exe

  • 資深大佬 : rubycedar

    @shiny 我还是没明白 不带./的可执行文件只会是$path 里的,当前目录下有 ls 又能怎么样?

  • 資深大佬 : Sainnhepark

    除了 cd 以外的命令都要加

  • 資深大佬 : icbmicbm

    曾经是这样 直到有一次删东西打掉了一个“.” … 不巧的是这个文件夹的命名还很离谱,然后当然是重装了

  • 資深大佬 : yyws2012

    @wtks1 所以把 . 加入 PATH 是非常危险的行为

  • 資深大佬 : ys0290

    鸟哥私房菜好像说执行命令的顺序是当前目录,环境变量定义,PATH

  • 資深大佬 : sleepm

    这不是习惯好吧。。
    一个点代表当前目录
    两个点代表上一级目录

  • 資深大佬 : msg7086

    @rubycedar 上下文里说的是和你相反的假设前提。
    你说的内容只是在一次次重复他们的观点。

    @CivAx
    > bash myScript  和 ./myScript
    这是两个不同的命令,本身就不能互换。

  • 資深大佬 : AntonChen

    自从执行 rm -rf ./* 巧漏 . 之后我就再也不用 ./ 了

  • 資深大佬 : Davic1

    # 同意 39
    加点号敲起命令来逻辑上更顺畅一些。。。cd ./usr/(进入当前目录下的 /usr/文件夹中)

  • 資深大佬 : chesterzzy

    两种情况都写。因为不产生歧义。

    或者可以简单地理解为,强迫症- –

  • 資深大佬 : sleepm

    又仔细读了下帖子。。
    输路径,传参数的话,比如 cd,只要传的对就行,不会多此一举加./
    或者输命令,bash xxx 和./xxx 是有区别的
    如果 xxx 头部有注释使用啥执行,那你用 bash xxx 可能就报错
    比如
    #!/usr/bin/env php
    <?php
    phpinfo();

    那再讲下 env 它是从 path 中找 php,如果你指定 /bin/php,在你的系统可能没问题,但是到别的系统上估计就找不到这个文件,所以 env 使脚本兼容性更好

    或者再说 不加./执行当前目录下的文件,如果这个文件和 path 中的某个命令同名,那就会执行 path 中的那个,因为它会先从 path 中找那个命令

  • 資深大佬 : hyperbin

    @murphyyyy 这和主题有什么关系吗?

  • 資深大佬 : JimmyTinsley

    除了 cd 之外都会加以保安全

  • 資深大佬 : gpra8764

    @flyingghost 不太会啦,键盘上./就是在一起的,这也能加一个空格那真的狗头了

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具