【问题标题】:Why does the system call chdir() not accept pathnames starting with "~"? [duplicate]为什么系统调用 chdir() 不接受以“~”开头的路径名? [复制]
【发布时间】:2019-10-22 11:36:54
【问题描述】:

我正在重建 bash 命令ls,使用 C 作为 unix 编程书练习,并查看了各种 dir 函数。我意识到,chdiropendir 和类似的不接受以 ~ 开头的路径名,但接受 ...
首先,为什么?其次,真正的 unix ls 命令的源代码是否可见?因为ls ~ 确实有效,我很好奇它是如何工作的。

【问题讨论】:

  • ~ 被 shell 扩展。
  • "~" 被 bash 替换,而不是由 'ls' 或执行的任何其他命令评估。您可以致电echo ~查看。但这意味着如果你从 bash 调用你的 ls,你也会得到主目录作为命令行参数
  • 啊谢谢。是的,这是有道理的,因为我刚刚意识到,如果我将 ~ 作为命令行参数传递,它会起作用
  • @Lavair:如果您将 ~ 的扩展值(shell 扩展)作为命令行参数传递。

标签: c unix


【解决方案1】:

~ 是一个 shell 快捷方式,可扩展至在 /etc/passwd 或 ldap 配置中设置的主目录。内核没有主目录的概念,也不知道~是什么目录。

【讨论】:

【解决方案2】:

~ 被 shell 扩展到主目录中。

您可以查找shell's source code 以查找扩展。

【讨论】:

  • @R.. 查看编辑。
猜你喜欢
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2013-06-30
  • 1970-01-01
  • 1970-01-01
  • 2016-01-13
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多