比如 cd usr/
和 cd ./usr/
或者 bash myScript
和 ./myScript
![]() | 1 lxk11153 2019-12-10 17:43:53 +08:00 有时写,有时不写,(我也不知道有木有区别 感觉这个和一些编程语言写不写语句末尾;有得一比 (我是写的,因为刚接触时就写了,养成习惯了不写看着不完成) |
2 yeyu123 2019-12-10 17:48:55 +08:00 没这习惯 当前目录不会写 |
3 murphyyyy 2019-12-10 17:50:49 +08:00 是的.习惯... 因为 windows 上的历史遗留问题....执行 exe 时必须输入./xxx |
![]() | 4 garlics 2019-12-10 17:55:10 +08:00 只有执行 shell 的时候会写 |
5 uxstone 2019-12-10 17:55:33 +08:00 ![]() rm -rf * rm -rf ./* |
![]() | 6 flyingghost 2019-12-10 17:57:23 +08:00 ![]() 非必要的时候还习惯打./ 的同学。。。 你们不怕.忘记打或者.和 /之间多敲了个空格吗?/狗头 |
![]() | 10 KyonLi 2019-12-10 18:20:05 +08:00 via iPhone @whywhywhy #7 Windows 不是优先执行当前目录下的 exe 吗,当初刚学 Linux 还适应了好长时间./xxx 执行 |
![]() | 12 k9982874 2019-12-10 18:21:33 +08:00 via iPhone 必须写,吃过 rm -rf 的亏 |
13 wangkun025 2019-12-10 18:22:04 +08:00 新手表示,不输入. |
![]() | 15 rzti483NAJ66l669 2019-12-10 18:28:00 +08:00 via iPhone @love 恶意程序也可以命名为 ls |
![]() | 18 Oktfolio 2019-12-10 18:39:29 +08:00 我反正是必须写 |
![]() | 19 Oktfolio 2019-12-10 18:40:32 +08:00 但是 cd 后面不写 |
![]() | 21 ajax10086 2019-12-10 18:45:40 +08:00 via iPhone 第一个不写,第二个写 |
22 skinny 2019-12-10 18:55:01 +08:00 如果有通配符(没有通配符的也要按 tab 补全)必须写,这是有过教训的人才能理解的 |
![]() | 23 shawnLuo 2019-12-10 19:08:29 +08:00 跑脚本的时候才会写,其他都是直接路径名 |
![]() | 25 manwei6341 2019-12-10 20:04:02 +08:00 写 |
27 murphyyyy 2019-12-10 20:11:51 +08:00 |
![]() | 30 liuzhiyong 2019-12-10 21:23:36 +08:00 第一种情况,cd 不会写“./”;第二种情况,执行脚本会写“./”。 |
31 lihongjie0209 2019-12-10 21:30:05 +08:00 可执行文件不在 PATH 变量中才需要这种写法, 而且是 Linux bash 才有的情况, 在 Windows CMD 下直接使用 xxx.exe 也可以直接运行。 所以写不写看你用什么 shell, 都是历史遗留问题然后变为习惯了 |
32 yan5990853 2019-12-10 21:34:17 +08:00 区别还是有的 不带./会查环境变量,可能有时候不是你想要的结果。 |
![]() | 33 crella 2019-12-10 21:43:51 +08:00 via Android @lihongjie0209 powershell 要指定.\local_app.exe ,不指定的话会报错并提示本目录有 local_app.exe |
34 rubycedar 2019-12-10 21:47:32 +08:00 via iPhone @shiny 我还是没明白 不带./的可执行文件只会是$path 里的,当前目录下有 ls 又能怎么样? |
![]() | 35 Sainnhepark 2019-12-10 21:49:59 +08:00 via Android 除了 cd 以外的命令都要加 |
![]() | 36 icbmicbm 2019-12-11 00:37:08 +08:00 via iPhone 曾经是这样 直到有一次删东西打掉了一个“.” ... 不巧的是这个文件夹的命名还很离谱,然后当然是重装了 |
38 ys0290 2019-12-11 00:59:15 +08:00 via iPhone 鸟哥私房菜好像说执行命令的顺序是当前目录,环境变量定义,PATH |
39 sleepm 2019-12-11 01:02:23 +08:00 via Android 这不是习惯好吧。。 一个点代表当前目录 两个点代表上一级目录 |
![]() | 40 msg7086 2019-12-11 07:59:16 +08:00 |
![]() | 41 AntonChen 2019-12-11 08:26:45 +08:00 via Android 自从执行 rm -rf ./* 巧漏 . 之后我就再也不用 ./ 了 |
42 Davic1 2019-12-11 09:34:25 +08:00 # 同意 39 楼 加点号敲起命令来逻辑上更顺畅一些。。。cd ./usr/(进入当前目录下的 /usr/文件夹中) |
43 chesterzzy 2019-12-11 10:07:28 +08:00 两种情况都写。因为不产生歧义。 或者可以简单地理解为,强迫症- - |
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 中找那个命令 |
![]() | 46 JimmyTinsley 2019-12-11 14:38:15 +08:00 除了 cd 之外都会加以保安全 |
47 gpra8764 2019-12-11 15:51:06 +08:00 @flyingghost 不太会啦,键盘上./就是在一起的,这也能加一个空格那真的狗头了 |