gpt4 book ai didi

bash - 带有子外壳的 'cd' 命令的别名未按预期工作

转载 作者:行者123 更新时间:2023-12-04 05:53:35 26 4
gpt4 key购买 nike

我刚刚了解了 bash 中的别名。我创建了一个这样的:
alias="cd $directory"
哪里$directory来自使用输入。在另一个 shell 脚本中,我可以像这样启动一个子 shell:
( bash )
这将我带到子shell,如果我运行 cd ,我去别名,cd $directory .这很棒,而且似乎按预期工作。

我正在寻找的是当子shell启动时,cd会自动发生,所以我试过:
( bash | cd )
认为它会启动子shell和cd到用户输入的$directory但它不起作用。我怎样才能让它发挥作用?我也试过 ( bash -c cd)无济于事。

谢谢。

最佳答案

原因( bash | cd )行不通的是管道中的每个命令都在单独的子shell 中运行,因此 ( bash | cd )本质上等同于 ( ( bash ) | ( cd ) ) (当然,后者会启动更多子shell)。相反,您应该能够编写:

( cd ; bash )

(在运行 cd 之前运行 bash )自 bash将继承启动它的子shell的执行环境的副本。

顺便说一句——你确定要创建 cd以这种方式作为别名?这对我来说似乎容易出错且令人困惑。我认为创建一个 shell 函数会更好 cd s 到用户指定的目录:
function cd_user () { cd "$directory" ; }

( cd_user ; bash )

关于bash - 带有子外壳的 'cd' 命令的别名未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9780624/

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