学好嵌入式
时间:2011-08-10
来源:互联网
许多刚接触Linux shell的人,会使用下列命令编译运行程序:
然后果断碰壁了,他就会来论坛求助。
原因是很简单的:当前目录“.”不在PATH变量中。命令都在PATH中搜索,所以PATH中找不到a.out命令。
正确做法:
但为什么不把当前目录加入PATH呢?貌似Windows的cmd和DOS神马的都这样做,其实旧的UNIX什么的也是这样做的。
其实主要是安全问题。当前目录是会变化的,用户完全可能进入某个未知的目录,然后使用系统命令。但万一当前目录下有一个与系统命令名字一样的文件,实际执行的就可能不是想要用的系统命令。
如果当前目录在PATH中,我cd进某个人人可访问目录,而某个坏人在这里放了一个恶意程序,并命名为cat,为了查看某个文件我输入了cat,然后伪cat提示我输入密码(虽然很奇怪,但是愚蠢的人类也许一粗心就没注意),然后我输入了密码...... 我就杯具了。如果我用了root,那就更杯具了。
虽然把当前目录放在PATH最后可以避免覆盖系统程序。但自己扩充PATH时,一般都是放在最后,所以还是有被覆盖的风险。所以最好还是别放进PATH了,多输入一个“./”又累不死人。
看APUE知道的,分享一下。
代码:
cuihao@cuihao-arch mysh $ gcc mysh.c
cuihao@cuihao-arch mysh $ a.out
zsh: command not found: a.out
cuihao@cuihao-arch mysh $ a.out
zsh: command not found: a.out
然后果断碰壁了,他就会来论坛求助。
原因是很简单的:当前目录“.”不在PATH变量中。命令都在PATH中搜索,所以PATH中找不到a.out命令。
正确做法:
代码:
cuihao@cuihao-arch mysh $ ./a.out
..........
..........
但为什么不把当前目录加入PATH呢?貌似Windows的cmd和DOS神马的都这样做,其实旧的UNIX什么的也是这样做的。
其实主要是安全问题。当前目录是会变化的,用户完全可能进入某个未知的目录,然后使用系统命令。但万一当前目录下有一个与系统命令名字一样的文件,实际执行的就可能不是想要用的系统命令。
如果当前目录在PATH中,我cd进某个人人可访问目录,而某个坏人在这里放了一个恶意程序,并命名为cat,为了查看某个文件我输入了cat,然后伪cat提示我输入密码(虽然很奇怪,但是愚蠢的人类也许一粗心就没注意),然后我输入了密码...... 我就杯具了。如果我用了root,那就更杯具了。
虽然把当前目录放在PATH最后可以避免覆盖系统程序。但自己扩充PATH时,一般都是放在最后,所以还是有被覆盖的风险。所以最好还是别放进PATH了,多输入一个“./”又累不死人。
看APUE知道的,分享一下。
作者: cuihao 发布时间: 2011-08-10
进来学习的
作者: tenzu 发布时间: 2011-08-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28