gpt4 book ai didi

linux - Dash,文件路径是否有任何限制

转载 作者:太空宇宙 更新时间:2023-11-04 10:33:07 27 4
gpt4 key购买 nike

我在我的 Linux 机器上放置了一个可执行文件,该可执行文件的路径长度为 107 个字符。我使用命令 echo -n "/path/to/the/executable"| 找到了字符数wc -c -m。当我尝试使用完整路径执行可执行文件时,出现以下错误:

sh: 1:/subpath/to/the/executable: not found

我检查了 /subpath/to/the/executable 的长度,它是 81 个字符。如果我放置我的可执行文件,使其路径长度小于 81 个字符,我不会收到上述 sh 错误

我做了一些搜索,发现 Linux env 上的文件路径限制为 255 个字符。我找不到 dash 或 shell 是否对文件路径有任何限制。在我的机器上/bin/sh 是/bin/dash 的符号链接(symbolic link)。

有人可以解释破折号强制执行的文件路径上 81 个字符的限制吗?有没有办法增加限制?

最佳答案

是的,dash(由于 Linux)对文件路径的长度有限制:

  • 路径中的任何条目都不能超过 255 个字符。
  • 总路径不能超过 4095 个字符。

以下是证明这一点的示例:

$ "$(head -c 255 /dev/zero | tr '\0' 'x')"
dash: 2: xxxxxx[...]xxxxxxx: not found

$ "$(head -c 256 /dev/zero | tr '\0' 'x')"
dash: 3: xxxxxx[...]xxxxxxxx: File name too long

$ "$(while true; do printf "/x"; done | head -c 4095)"
dash: 4: /x/x/[...]/x/x/x/: not found

$ "$(while true; do printf "/x"; done | head -c 4096)"
dash: 5: /x/x/[...]/x/x/x/x: File name too long

没有限制影响 81 个字符或 107 个字符的名称。这是一个示例,显示 200 个字符在 dash 中工作得很好:

$ name="./$(head -c 200 /dev/zero | tr '\0' x)"
$ printf '%s\n' '#!/bin/sh' 'echo "hello world"' > "$name"
$ chmod +x "$name"
$ "$name"
hello world

如果您对 Java 程序为何无法正确执行命令有任何疑问,请将它们单独张贴在 java 标签下。确保不要缩写或屏蔽文件名,因为确切的值很重要。

关于linux - Dash,文件路径是否有任何限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38858849/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com