助教最近很高产啊,前两天刚投稿了:全新购买的的Linux云服务器居然无法使用ssh登陆
下面是投稿笔记
帮一个朋友安装软件的时候,遇到一个奇奇怪怪的bug:
conda create -n pyscenic python=3.7
我检查了一下环境,conda 明明已经安装,which conda
和 conda --help
都可以成功调出来。但是因为 conda 不是我安装的,我一开始怀疑是软件版本的问题,于是卸载重装 conda,不过还是没解决。
凭借我 20年 的 Linux 经验,我怀疑上面这句代码有看不到的bug,因为这句代码是我从微信聊天窗口复制过来的。当我重新敲了一遍,果然,正常 work 了:
$ conda create -n pyscenic python=3.7
可以对比一下,下面这两句看起来一模一样的代码,但是结果却不一样,到底是怎么回事呢?
首先用个“照妖镜” 让妖怪现出原形吧,第一句和第二句就是从微信聊天窗口复制过来的,echo 出来传递给 cat -A 就可以看到,编码不一样了。每个空格的前面,都变成了了一个 M-BM-
编码的字符:
也就是说,有问题的代码里的空格,不是系统可以识别的空格,或者说,这里的“空格”不是空格,这也解释是为什么报错信息是:
conda create -n pyscenic python=3.7 : command not found
而不是:
conda : command not found
如果把这句有问题的代码,放到 sublime 里面进行查看,就可以看到这个符号的原形:
这个 0xa0
字符,是采用 “windows-1252” 的编码格式,而不是默认的 “utf-8” ,系统无法识别为空格。
对于比较少的文本,我们可以手动修改。但是作为一个“合格”的程序员,当然要用最偷懒 高效的方式来修改:
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有