【发布时间】:2019-12-21 15:52:14
【问题描述】:
我在.bashrc 中设置了几个 bash aliases,但每次打开新终端时它们都会产生错误。每次打开一个新终端,都会出现两个bash: cd: too many arguments。别名按预期工作,但无论如何我想解决这些错误。以下是有问题的别名:
alias .1="cd .."
alias .2="cd ../.."
alias .3="cd ../../.."
alias .4="cd ../../../.."
alias .5="cd ../../../../.."
alias .=".1" #Trouble maker
alias ..=".2"
alias ...=".3"
alias ....=".4"
alias .....=".5"
我已将其范围缩小到 alias .=".1" 作为造成错误的罪魁祸首。我知道. 是它自己的命令,我在它上面打了一个别名。我不确定这是否是问题,但我注意到当我删除此行时错误消失了。此外,在 CLI 本身上运行别名不会产生相同的错误......只有在 .bashrc 中才会产生错误。
我尝试过的事情:
- = 两边的引号
- 将
alias .=".1"更改为alias .="cd .." - 在别名命令前添加一个空格以试图抑制输出
【问题讨论】:
-
Running
PS4='${BASH_SOURCE##*/}:$LINENO+' bash -x -l -i将记录您的 shell 启动的执行情况,准确显示您设置的别名如何在稍后的启动过程中破坏其他命令,当他们尝试使用内置的.命令时。 -
btw:这是一个常用别名:
alias ..='cd ..'(两边各 2 个点)。有时这也被定义为:alias ...='cd ../..'。所以我的建议是:在别名的左侧多使用一点。