alias。=“cd ..”导致bash从root开始

时间:2013-07-18 13:40:21

标签: bash command-line terminal command-line-interface

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

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

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

此脚本中经常使用此.命令来引入其他脚本的定义。当您将.别名为其他内容时,您会覆盖标准定义,会破坏使用它的每个脚本

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

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

答案 1 :(得分:1)

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

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

所以:

  • 您输入并且您在/home/your_home
  • 您设置了alias .="cd .."
  • 在阅读.时找到了一些点.bashrc
  • 此点被执行为别名,因此您获得cd ..,这会将您移至/home
  • 您可能有多个.并且必须再次执行,将您从/home移至/

解决方案:

  • 使用更好的名称创建一个没有任何预定义含义的别名。
  • 将您的别名源移至.bashrc。
  • 的底部