1

如果我将别名添加alias .="cd .."到我的 .bash_aliases 文件(源自 .bashrc)中,它会导致我创建的每个新 shell 从 .bash_aliases 开始/。我猜这只是我不明白的基本问题。

有任何想法吗?

4

2 回答 2

2

.是一个内置的shell命令,相当于“source”——它在当前shell中执行一个shell脚本,从而允许它定义变量、函数等。

.命令在脚本中经常使用,以从其他脚本中引入定义。当您.使用其他东西时,您会覆盖标准定义并破坏使用它的每个脚本

请不要重新定义标准命令。

(PS 实际上比这更复杂,因为别名仅在交互式 shell 中有效,因此.在交互式与非交互式 shell 中会做完全不同的事情。这对这种情况并没有真正的帮助。)

于 2013-07-18T16:13:00.087 回答
1

.指当前目录,而..指 dirs 层次结构中的上一级目录。

必须发生的是,在您的别名定义之后bashrc有一些.,因此它被调用,因此您被移动到父目录。

所以:

  • 你进入,你在/home/your_home
  • 你设置alias .="cd .."
  • .阅读时发现了一些点.bashrc
  • 这个点被执行为一个别名,所以你得到cd ..,这将你移动到/home.
  • 你可能有不止一个.,它必须再次执行,将你/home/.

解决方案:

  • 创建一个没有任何预定义含义的更好名称的别名。
  • 将您的别名来源移动到 .bashrc 的底部。
于 2013-07-18T13:43:14.243 回答