【问题标题】:Problem in executing user defining shell commmand执行用户定义 shell 命令时出现问题
【发布时间】:2026-01-14 18:30:02
【问题描述】:

我正在尝试学习 shell 的基础知识。我使用 vim editro 创建自己的要执行的命令列表。这是我创建代码的方式 vi mycommands

然后在我写的这个文件里面

   cd Documents

我使用的是 macOS Catalina,它默认有 zsh 但切换到 bash

所以当我在终端中编写以下命令时:

   $ sh +x mycommands

显示

+cd Documents

文档有一些文件和目录,但它没有改变目录。我哪里出错了? 任何帮助将不胜感激。

【问题讨论】:

  • 您的 Documents 文件夹是否可能为空?
  • no @glenn jackman Documents 不是空的,除了它根本没有改变目录
  • sh -x mycommands 的输出是什么?
  • @hmm 成功了...谢谢!!!
  • 顺便说一句:bash != zsh != sh

标签: bash macos shell vim sh


【解决方案1】:

sh myscript 一样运行的脚本在单独的子shell 中执行,而不是在当前shell 中执行。在脚本中更改目录不会导致您的 shell 更改目录。如果要在 shell 中更改目录,则需要在 shell 中运行命令。

为此,运行:

. ./myscript(sh,bash)或source ./myscript(bash)。

看到这个question

【讨论】:

  • 非常感谢...感谢!