新手尝试使用资源

新手尝试使用资源

我正在尝试使用一个简单的文件来更改用户当前所在的目录。如果我使用 . ./Genesis 运行该文件,则源文件可以正常工作。但我只想使用 ./Genesis 并让 cd 命令工作。我在我的根/脚本文件夹:kyle@computer:~/Scripts

我怎样修改代码才能做到这一点?

我有一个名为 Genesis 的文件,它调用源文件

#!/bin/bash
#Genesis
. ./Genesis.sh

Genesis.sh文件包含以下代码:

jhome() {
cd ~/Scripts/dungeon
}
jhome

答案1

如果您正常运行 shell 脚本而不是执行 source 命令,它将在子 shell 中运行,不会影响您当前的 shell。如果您希望它更改调用它的 shell 的当前工作目录,则必须执行 source 命令。这就是 sourcing 存在的原因。

答案2

为了实现您的目标,您应该寻找除执行在其自己的 shell 中执行的 shell 脚本之外的其他方法,而不会影响调用者的 shell。

您可以执行以下操作之一:

  • jhome函数放入文件中.bashrc并调用它而不是脚本。
  • 在以下位置添加别名.bashrcalias Genesis='cd ~/Scripts/dungeon'
  • 通过源执行脚本:. ./Genesis

相关内容