你们习惯在 Linux 下输路径的时候带 ./ 吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
CivAx
V2EX    程序员

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

  •  
  •   CivAx 2019-12-10 17:37:26 +08:00 4917 次点击
    这是一个创建于 2133 天前的主题,其中的信息可能已经有所发展或是发生改变。

    比如 cd usr/ 和 cd ./usr/

    或者 bash myScript 和 ./myScript

    47 条回复    2019-12-11 15:51:06 +08:00
    lxk11153
        1
    lxk11153  
       2019-12-10 17:43:53 +08:00
    有时写,有时不写,(我也不知道有木有区别
    感觉这个和一些编程语言写不写语句末尾;有得一比 (我是写的,因为刚接触时就写了,养成习惯了不写看着不完成)
    yeyu123
        2
    yeyu123  
       2019-12-10 17:48:55 +08:00
    没这习惯
    当前目录不会写
    murphyyyy
        3
    murphyyyy  
       2019-12-10 17:50:49 +08:00
    是的.习惯...
    因为 windows 上的历史遗留问题....执行 exe 时必须输入./xxx
    garlics
        4
    garlics  
       2019-12-10 17:55:10 +08:00
    只有执行 shell 的时候会写
    uxstone
        5
    uxstone  
       2019-12-10 17:55:33 +08:00   3
    rm -rf *
    rm -rf ./*
    flyingghost
        6
    flyingghost  
       2019-12-10 17:57:23 +08:00   3
    非必要的时候还习惯打./ 的同学。。。
    你们不怕.忘记打或者.和 /之间多敲了个空格吗?/狗头
    whywhywhy
        7
    whywhywhy  
       2019-12-10 18:15:07 +08:00 via Android
    @murphyyyy 哪个 windows。。。
    shiny
        8
    shiny  
       2019-12-10 18:16:43 +08:00
    @murphyyyy linux 上也一样,记得是为了安全原因,假设你要 ls,结果当前目录下也有一个 ls。
    love
        9
    love  
       2019-12-10 18:18:49 +08:00
    @shiny 当前目录下有 ls 为什么会影响 ls 的安全性?
    KyonLi
        10
    KyonLi  
       2019-12-10 18:20:05 +08:00 via iPhone
    @whywhywhy #7 Windows 不是优先执行当前目录下的 exe 吗,当初刚学 Linux 还适应了好长时间./xxx 执行
    KyonLi
        11
    KyonLi  
       2019-12-10 18:21:06 +08:00 via iPhone
    回复错人了,尴尬 应该 @murphyyyy
    k9982874
        12
    k9982874  
       2019-12-10 18:21:33 +08:00 via iPhone
    必须写,吃过 rm -rf 的亏
    wangkun025
        13
    wangkun025  
       2019-12-10 18:22:04 +08:00
    新手表示,不输入.
    CivAx
        14
    CivAx  
    OP
       2019-12-10 18:22:16 +08:00
    @k9982874 #12 你搞不好是我的前同事
    rzti483NAJ66l669
        15
    rzti483NAJ66l669  
       2019-12-10 18:28:00 +08:00 via iPhone
    @love 恶意程序也可以命名为 ls
    shiny
        16
    shiny  
       2019-12-10 18:31:22 +08:00
    @love 比如发你个文件夹,里面加个恶意程序,命名成 ls。你进去 ls 下就炸了。
    love
        17
    love  
       2019-12-10 18:36:12 +08:00
    @shiny 你想想可不可能,这是天大的安全 BUG,怎么可能在当前目录搜索可执行文件
    Oktfolio
        18
    Oktfolio  
       2019-12-10 18:39:29 +08:00
    我反正是必须写
    Oktfolio
        19
    Oktfolio  
       2019-12-10 18:40:32 +08:00
    但是 cd 后面不写
    wtks1
        20
    wtks1  
       2019-12-10 18:41:36 +08:00 via Android
    @love 看环境变量吧,如果把.加进变量里,这种操作就可以实现
    ajax10086
        21
    ajax10086  
       2019-12-10 18:45:40 +08:00 via iPhone
    第一个不写,第二个写
    skinny
        22
    skinny  
       2019-12-10 18:55:01 +08:00
    如果有通配符(没有通配符的也要按 tab 补全)必须写,这是有过教训的人才能理解的
    shawnLuo
        23
    shawnLuo  
       2019-12-10 19:08:29 +08:00
    跑脚本的时候才会写,其他都是直接路径名
    namaketa
        24
    namaketa  
       2019-12-10 20:03:02 +08:00
    @uxstone 吃过这个亏的人都会写
    manwei6341
        25
    manwei6341  
       2019-12-10 20:04:02 +08:00
    rubycedar
        26
    rubycedar  
       2019-12-10 20:06:39 +08:00 via iPhone
    @shiny 不是得要./ls 才能执行当前目录下的 ls 程序吗?
    murphyyyy
        27
    murphyyyy  
       2019-12-10 20:11:51 +08:00
    @shiny
    @whywhywhy
    @KyonLi
    在 windows powershell 上也是这个原因,是为了安全问题.

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

    aHR0cHM6Ly9pbWd1ci5jb20vYS9jT29ZNmRE
    shiny
        28
    shiny  
       2019-12-10 20:21:06 +08:00
    @rubycedar 请阅读上下文
    27
        29
    27  
       2019-12-10 21:04:57 +08:00
    @uxstone 这两个有什么区别?
    liuzhiyong
        30
    liuzhiyong  
       2019-12-10 21:23:36 +08:00
    第一种情况,cd 不会写“./”;第二种情况,执行脚本会写“./”。
    lihongjie0209
        31
    lihongjie0209  
       2019-12-10 21:30:05 +08:00
    可执行文件不在 PATH 变量中才需要这种写法, 而且是 Linux bash 才有的情况, 在 Windows CMD 下直接使用 xxx.exe 也可以直接运行。

    所以写不写看你用什么 shell, 都是历史遗留问题然后变为习惯了
    yan5990853
        32
    yan5990853  
       2019-12-10 21:34:17 +08:00
    区别还是有的 不带./会查环境变量,可能有时候不是你想要的结果。
    crella
        33
    crella  
       2019-12-10 21:43:51 +08:00 via Android
    @lihongjie0209 powershell 要指定.\local_app.exe ,不指定的话会报错并提示本目录有 local_app.exe
    rubycedar
        34
    rubycedar  
       2019-12-10 21:47:32 +08:00 via iPhone
    @shiny 我还是没明白 不带./的可执行文件只会是$path 里的,当前目录下有 ls 又能怎么样?
    Sainnhepark
        35
    Sainnhepark  
       2019-12-10 21:49:59 +08:00 via Android
    除了 cd 以外的命令都要加
    icbmicbm
        36
    icbmicbm  
       2019-12-11 00:37:08 +08:00 via iPhone
    曾经是这样 直到有一次删东西打掉了一个“.” ... 不巧的是这个文件夹的命名还很离谱,然后当然是重装了
    yyws2012
        37
    yyws2012  
       2019-12-11 00:46:06 +08:00
    @wtks1 所以把 . 加入 PATH 是非常危险的行为
    ys0290
        38
    ys0290  
       2019-12-11 00:59:15 +08:00 via iPhone
    鸟哥私房菜好像说执行命令的顺序是当前目录,环境变量定义,PATH
    sleepm
        39
    sleepm  
       2019-12-11 01:02:23 +08:00 via Android
    这不是习惯好吧。。
    一个点代表当前目录
    两个点代表上一级目录
    msg7086
        40
    msg7086  
       2019-12-11 07:59:16 +08:00
    @rubycedar 上下文里说的是和你相反的假设前提。
    你说的内容只是在一次次重复他们的观点。

    @CivAx
    > bash myScript  和 ./myScript
    这是两个不同的命令,本身就不能互换。
    AntonChen
        41
    AntonChen  
       2019-12-11 08:26:45 +08:00 via Android
    自从执行 rm -rf ./* 巧漏 . 之后我就再也不用 ./ 了
    Davic1
        42
    Davic1  
       2019-12-11 09:34:25 +08:00
    # 同意 39 楼
    加点号敲起命令来逻辑上更顺畅一些。。。cd ./usr/(进入当前目录下的 /usr/文件夹中)
    chesterzzy
        43
    chesterzzy  
       2019-12-11 10:07:28 +08:00
    两种情况都写。因为不产生歧义。

    或者可以简单地理解为,强迫症- -
    sleepm
        44
    sleepm  
       2019-12-11 10:50:06 +08:00 via Android
    又仔细读了下帖子。。
    输路径,传参数的话,比如 cd,只要传的对就行,不会多此一举加./
    或者输命令,bash xxx 和./xxx 是有区别的
    如果 xxx 头部有注释使用啥执行,那你用 bash xxx 可能就报错
    比如
    #!/usr/bin/env php
    <?php
    phpinfo();

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

    或者再说 不加./执行当前目录下的文件,如果这个文件和 path 中的某个命令同名,那就会执行 path 中的那个,因为它会先从 path 中找那个命令
    hyperbin
        45
    hyperbin  
       2019-12-11 12:06:54 +08:00 via Android
    @murphyyyy 这和主题有什么关系吗?
    JimmyTinsley
        46
    JimmyTinsley  
       2019-12-11 14:38:15 +08:00
    除了 cd 之外都会加以保安全
    gpra8764
        47
    gpra8764  
       2019-12-11 15:51:06 +08:00
    @flyingghost 不太会啦,键盘上./就是在一起的,这也能加一个空格那真的狗头了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2786 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:28 PVG 22:28 LAX 07:28 JFK 10:28
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86