文件名: 测试.sh
#!/bin/bash
ZDir="$(echo /usr/src)"
cd "$ZDir"
当我执行脚本时./Test.sh
,该命令cd
不执行任何操作。如果我尝试直接在 bash 终端中执行此操作,它就像一个魅力。此外,在脚本内部和外部使用的 echo 都会返回正确的值 ( /usr/src
)。
有谁知道为什么会发生这种情况?再说一次:cd $ZDir
如果在脚本之外直接在终端中使用,则可以工作......
编辑:无法找到“重复”的答案,但那里的 G-Man 用户准确地回答了我需要做的事情。只需包含一个 && ,然后是我需要执行并工作的下一个命令。函数也可以用于此... cdZDir() { cd /usr/src;制作;进行安装; }
然后直接调用函数即可。
答案1
cd
只影响当前的shell 及其后代。 Shell 脚本在新的 shell 进程中运行,因此cd
脚本中的 a 仅影响脚本执行的其余部分及其运行的任何程序。
- 如果你输入像
pwd
and 这样的命令ls
进入脚本,之后cd
,你会看到已经cd
成功在脚本中。 - 如果你说
. ./Test.sh
,你当前的(主)shell 进程将读取Test.sh
并执行其中的命令。然后您将看到当前(主)shell 进程将位于新目录中。