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

2019-12-10 17:37:26 +08:00
 CivAx

比如 cd usr/ 和 cd ./usr/

或者 bash myScript 和 ./myScript

4369 次点击
所在节点    程序员
47 条回复
ajax10086
2019-12-10 18:45:40 +08:00
第一个不写,第二个写
skinny
2019-12-10 18:55:01 +08:00
如果有通配符(没有通配符的也要按 tab 补全)必须写,这是有过教训的人才能理解的
shawnLuo
2019-12-10 19:08:29 +08:00
跑脚本的时候才会写,其他都是直接路径名
namaketa
2019-12-10 20:03:02 +08:00
@uxstone 吃过这个亏的人都会写
manwei6341
2019-12-10 20:04:02 +08:00
rubycedar
2019-12-10 20:06:39 +08:00
@shiny 不是得要./ls 才能执行当前目录下的 ls 程序吗?
murphyyyy
2019-12-10 20:11:51 +08:00
@shiny
@whywhywhy
@KyonLi
在 windows powershell 上也是这个原因,是为了安全问题.

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

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

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627706

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX