linux - 为什么反引号中的 cd 永远不起作用

标签 linux bash shell unix sh

<分区>

Possible Duplicate:
Why doesn’t “cd” work in a bash shell script?

为什么反引号或 $(..) 中的 cd 命令永远不会更改到新目录。知道如何在单个命令中执行此操作,即捕获任何错误并更改目录。

[root@linux ~]# pwd
/root
[root@linux ~]# cmdMsg=`cd /tmp 2>&1`
[root@linux ~]# pwd
/root

最佳答案

因为反引号会产生一个单独的进程并单独运行。所以它在该进程中执行 cd 但不会更改当前进程的工作目录。

如果你只需要查看命令是否成功并且你想更改目录,你可以检查它的退出代码:

cd /tmp
retval = $?

if [ $retval -gt 0 ]; then
    echo "cd failed"
fi

关于linux - 为什么反引号中的 cd 永远不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13033910/

相关文章:

linux - 运行 sudo apt-get update 时出错

c - 在 C 中定义常量数组

linux - Shell 脚本文件观察器并发性

bash - 使用 bash 查找 PostgreSQL 数据库是否存在

regex - 如何检查 bash 中字符串的最后一个字符?

linux - 共享对象中局部符号的重定位 R_386_JUMP_SLOT

c++ - 使用 QT creator 在树莓派上通过 Wifi 执行简单的终端命令

git - 通过命令行在 Git 提交消息中使用感叹号

linux - 用于获取操作系统版本的 Shell 脚本

linux - 打印带有列号的页脚