首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用/bin/sh (破折号)解决$PATH混淆问题

用/bin/sh (破折号)解决$PATH混淆问题
EN

Ask Ubuntu用户
提问于 2014-04-29 08:02:36
回答 1查看 1.4K关注 0票数 1

这个问题是https://unix.stackexchange.com/questions/126955/percent-in-path-environment-variable的后续问题.我把它贴在这里,因为它更有发行版的特色。

默认情况下用于sh的shell (即破折号)与execvp不兼容,因为它使用的是$PATH变量。处理奇怪文件名的一种标准化方法是使用URL编码方案。现在我不能使用这个标准了,因为dash保留了%。为了解决这个问题,我有以下选择

  1. 建议Ubuntu上的用户将符号链接/bin/sh更改为其他类似bash的内容。由于popen(3)依赖于/bin/sh,所以有必要在全球范围内这样做。
  2. 使用%以外的其他内容与传统URL编码不同
  3. 每当出现任何故宫人物 (是的,但这些限制在双引导配置中是正常的)时,都会抛出一个错误。

理想情况下,我更喜欢选项(1)似乎是最好的方法。它使得在文件名中使用标准化的转义方案成为可能。但是,由于dash的行为显然与其他shell不同,如果任何系统脚本依赖于dash特有的功能,它将破坏系统。此外,它还要求用户具有根权限。

选项(2)意味着我必须找到另一个符号,它不会在任何地方发生碰撞。当然,一些外壳可能会破坏任何不是字母的符号。

选项(3)意味着功能的大幅减少。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2014-04-29 08:10:17

选项一相当简单。你只需要跑:

代码语言:javascript
复制
sudo dpkg-reconfigure dash

然后选择不。这将把/bin/sh推回/bin/bash

您可以手动完成此操作(删除链接,创建一个新链接),但这是官方方法

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/457529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档