Linux
-bash: /bin/cd: No such file or directory - cd 後自動執行 ls
我不小心破壞了我的
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 合規性,並作為測試是否可以將目錄更改為特定目錄。