Linux

-bash: /bin/cd: No such file or directory - cd 後自動執行 ls

  • June 30, 2018

我不小心破壞了我的cd命令。

我試圖在被呼叫ls後自動執行cd

我發現一個文章說我必須執行alias cd='/bin/cd && /bin/ls',但現在我得到-bash: /bin/cd: No such file or directory並且不能再更改目錄了。

您的系統(像許多 Unix 系統一樣)沒有外部cd命令(至少不在該路徑上)。即使它有一個,ls也會給你原始目錄的目錄列表。外部命令永遠不能更改呼叫程序(您的 shell)的目錄1。

從環境中刪除別名unalias cd(並從您可能已將其添加到的任何 shell 初始化文件中刪除其定義)。

使用 shell 函式,您可以讓它像往常一樣工作,如果成功,最後cd額外呼叫:ls``cd

cd () {
   command cd "$@" && ls -lah
}

或者,

cd () { command cd "$@" && ls -lah; }

這將cd使用您提供給函式的相同命令行參數呼叫內置於您的 shell 中的命令。如果目錄更改成功,ls則會執行。

command命令停止 shell 遞歸地執行函式。

函式定義(如上所述)將進入您的 shell 的啟動文件。與bash,這可能是~/.bashrc。然後,函式定義將在下一個新的互動式 shell 會話中處於活動狀態。如果您希望它現在處於活動狀態,則在互動式 shell 提示符處按原樣執行函式定義,這將在您目前的互動式會話中定義它。


1在cd可用作外部命令的系統上,此命令也不會更改呼叫程序的目錄。這種命令的唯一真正用途是提供 POSIX 合規性,並作為測試是否可以將目錄更改為特定目錄

引用自:https://unix.stackexchange.com/questions/451778