当我 运行 /bin/sh -c 时不同的 ulimit

different ulimit when I run /bin/sh -c

$ ulimit -n
1024
$ /bin/sh -c ulimit -n
unlimited

即使我指定 shell 我正在使用:

$ echo $SHELL
/bin/bash
$ /bin/bash -c ulimit -n
unlimited

为什么 ulimit 没有给我相同的值?

发生这种情况是因为您 运行宁 ulimit 没有参数。 -n 不是正在执行的命令的一部分,而是变成 [=14=]。因此 unlimited 是最大文件大小

比较输出:

bash -c 'echo hello'  # says hello
bash -c echo hello    # blank line

然后 运行:

bash -c 'ulimit -n'