簡體   English   中英

僅當在 .bashrc 中設置時,Bash 別名會導致錯誤“bash: cd: too many arguments”

[英]Bash alias causing error "bash: cd: too many arguments" only when set in .bashrc

我在.bashrc設置了幾個 bash alias ,但是每次打開新終端時它們都會生成錯誤。 每次打開一個新的終端,都會出現兩個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中才會產生錯誤。

我嘗試過的事情:

  1. = 兩邊的引號
  2. alias .=".1"更改為alias .="cd .."
  3. 在 alias 命令之前添加一個空格以嘗試抑制輸出

別名. 意味着您正在更改后續 shell 命令包含其他 shell 腳本的方式。 由於. source在 bash 中做同樣的事情,你可以通過確保它們只使用source來解決這個問題。 例如,查看.bash_profile Bash 在啟動時會查看各種文件,並且.bashrc可能正在被.bash_profile讀取,並且其中的某些內容正在嘗試讀取. 其他一些文件。

但真的,為什么? 你能不能在每一個上加一個點就可以了? ..目錄是上一級,這樣可以更容易記住。 像這樣的改變是 shell 如何操作和將多個腳本粘合在一起的基礎,這將繼續讓你絆倒。

導致錯誤的別名是:alias .=".1"。 單個句點是 source 命令的同義詞,它從您作為參數傳遞的文件中讀取並執行命令。

您本質上(無意)所做的是嘗試使用別名更改源命令的行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM