gpt4 book ai didi

linux - 为什么 "/bin/sh cd/root/eos/"不起作用,但 "/bin/sh -c ls && cd/root/eos/"在 centos 中运行良好

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:42 28 4
gpt4 key购买 nike

我在脚本中使用 cd 命令时遇到了一个问题。下面是测试,所以有人能帮忙说出原因吗?

为什么“/bin/sh cd/root/eos/”在centos中不起作用,但“/bin/sh -c ls && cd/root/eos/”却工作得很好谢谢。

[root@izbp16eo65uiwii1mfm63tz eos]# pwd
/root/testeosnode/CryptoKylin-Testnet/docker/eos
[root@izbp16eo65uiwii1mfm63tz eos]# /bin/sh cd /root/eos/
[root@izbp16eo65uiwii1mfm63tz eos]# pwd
/root/testeosnode/CryptoKylin-Testnet/docker/eos
[root@izbp16eo65uiwii1mfm63tz eos]# /bin/sh -c ls && cd /root/eos/
build.log build.sh Dockerfile eos
[root@izbp16eo65uiwii1mfm63tz eos]# pwd
/root/eos

环境CentOS Linux 版本 7.5.1804(核心)[root@izbp16eo65uiwii1mfm63tz eos]# ls -l/bin/shlrwxrwxrwx 1 root root 4 10oct 9 18:00/bin/sh -> bash

最佳答案

/bin/sh cd/root/eos/ 不起作用,因为这不是让/bin/sh 执行命令的正确方法。

/bin/sh -c ls 有效,因为 -c 参数将使 /bin/sh 执行下一个参数,即 ls

/bin/sh -c "cd/root/eos/" 会“工作”。它将运行 /bin/sh ,该进程会将其目录更改为 /root/eos 然后该进程将退出,使正在运行的 shell 的工作目录不受影响。

/bin/sh -c ls && cd/root/eos/ 是 2 个命令的组合。

首先执行/bin/sh -c ls。如果成功,则执行 cd/root/eos。请注意,/bin/sh 命令仅运行 ls。它不运行 cd/root/eos - 该部分由您当前的 shell 运行,并且会更改您的工作目录。

请注意,这也与执行以下操作不同:

/bin/sh -c "ls && cd/root/eos"

在这种情况下,/bin/sh 将运行整个 ls && cd/root/eos 命令 - 尽管 cd 命令仅影响使用 /bin/sh 命令启动的进程,但它不会影响您正在运行的 shell。

关于linux - 为什么 "/bin/sh cd/root/eos/"不起作用,但 "/bin/sh -c ls && cd/root/eos/"在 centos 中运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53500198/

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