别名 cd && echo 无法正常工作

别名 cd && echo 无法正常工作

我正在尝试创建一个更改目录并打印一些内容的别名。

我写了这一行:

alias test="cd ~/Documents/MyDir && echo 'content'"

结果是:

content
~$:~/Documents/MyDir

预期结果是:

~$:~/Documents/MyDir content

答案1

除非添加额外的细节,否则下面的内容对于正在发生的事情来说是一个不错的猜测。

首先,您需要了解以下几件事:

  • 命令cd本身在您的示例中不会生成任何输出;请参阅cdBash 手册页中的命令,了解生成输出的 2 个条件,但这里都不适用。(您或您的系统管理员可能覆盖了默认设置,因此它确实生成了输出,但我们假设没有。您可以通过运行来检查type cd;如果看到cd is a shell builtin,则没有发生覆盖。)

  • 当 shell 需要您的输入时,它会发出提示,让您知道它在等您。它打印的内容由名为 的 shell 变量的值决定PS1;您可以通过输入 来查看它echo "$PS1"。您的提示可能类似于以下内容~$:\w\w扩展到您当前的目录;请参阅 Bash 手册页中的 PROMPTING 部分)。

当您输入test调用别名时会发生什么:

  1. shell 改变目录(可能不产生任何输出),然后
  2. 贝壳回应你content,然后
  3. 完成你的指令后,shell 现在会通过打印你的PS1变量来提示你输入更多输入。

...这就是您获得意想不到的结果的原因。

test最后说明: Unix/Linux 中已经有一个命令;运行man test它来查看它的作用。考虑命名你的别名try,或者albertotest。:-)

相关内容