Bla*_*ack 6 linux alias cd-command
我不小心破坏了我的cd命令。
我试图ls在cd被调用后自动执行。
我发现一个帖子说我必须执行alias cd='/bin/cd && /bin/ls',但现在我得到-bash: /bin/cd: No such file or directory并且不能再改变目录了。
Kus*_*nda 23
您的系统(与许多 Unix 系统一样)没有外部cd命令(至少在该路径上没有)。即使它有一个,它ls也会为您提供原始目录的目录列表。外部命令永远不能更改调用进程(您的 shell)1 的目录。
从环境中删除别名unalias cd(并从您可能已将其添加到的任何 shell 初始化文件中删除其定义)。
使用 shell 函数,您可以让它像cd往常一样工作,ls如果cd成功,则在末尾额外调用:
cd () {
command cd "$@" && ls -lah
}
Run Code Online (Sandbox Code Playgroud)
或者,
cd () { command cd "$@" && ls -lah; }
Run Code Online (Sandbox Code Playgroud)
这将cd使用您为函数提供的相同命令行参数调用内置于您的 shell 中的命令。如果目录更改成功,ls将运行。
该command命令会阻止 shell 递归地执行该函数。
函数定义(如上文所述)将进入您的 shell 的启动文件。随着bash,这可能是~/.bashrc。然后,函数定义将在下一个新的交互式 shell 会话中处于活动状态。如果您希望它现在处于活动状态,则在交互式 shell 提示符下按原样执行函数定义,这将在您当前的交互式会话中定义它。
1在cd可用作外部命令的系统上,此命令也不会更改调用进程的目录。对于这样的命令,唯一真正的用途是提供POSIX兼容并作为是否改变目录到一个特定的测试将是可能的。
| 归档时间: |
|
| 查看次数: |
4941 次 |
| 最近记录: |