bashrc:别名与函数 - 在多个命令中调用 cd 的区别

bashrc:别名与函数 - 在多个命令中调用 cd 的区别

如果我在 .bashrc 中定义这样的别名:

alias cd="cd $1 && ls"

如果我打电话:

cd test

它正确显示测试目录中的文件,但没有更改当前目录。

如果我在 .bashrc 中定义一个函数:

function cd {
 cd "$1" && ls
}

现在如果我打电话

cd test

它正确显示测试目录中的文件并将当前目录更改为“test”。

有人知道有什么区别吗?

答案1

事实上,在扩展后进行的第一个别名调用示例中:

cd test ---> cd $1 && ls test

这是 bash 脚本调用和别名扩展之间的基本区别!通过使用别名,您的参数将写入别名定义的所有字符之后。 The$1按字面意思使用,不使用test末尾的单词代替。您可以通过更改别名定义中的命令顺序来简单地验证这一点

alias cd="ls $1 && cd"

为您提供了正确的目录更改,但没有目录列表。

相关内容