gpt4 book ai didi

bash - 无法按预期在 bash 脚本中使用 cd

转载 作者:行者123 更新时间:2023-11-29 09:41:24 26 4
gpt4 key购买 nike

考虑我写的这个脚本,当没有给出参数(if ... 部分)时,它应该进入父目录。

#/bin/bash

if (($# == 0))
then
cd ..
else
for basename
do
cd ${PWD%$basename*}$basename
done
fi

问题是,如果我这样执行它

./up.sh

cd 在子 shell 中执行,使其无用。

如果我使用 source 执行脚本,它可以工作,但我不想那样调用它(我使调用脚本变得复杂,如果在 PATH 中找到)。

最佳答案

任意程序(例如您的 bash 程序)不能更改父进程的工作目录,因为这几乎会破坏所有生成子进程的现有进程。

你应该定义一个 bash aliasfunction反而。正如您所发现的,输入 source ./up.sh(或更短的代码:../up.sh)也可以。

关于bash - 无法按预期在 bash 脚本中使用 cd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8701663/

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