自定义cd命令

pee*_*ush 5 bash shell ubuntu cd


通常我会保留目录特定的设置.bashrc,每当我更改目录时执行命令source .bashrc以使这些设置生效.
现在我正在考虑操作cd命令~/.bashrc,因此每当我cd到新目录并且如果存在任何.bashrc时,它将自动加载.

与此类似cd $1; source .bashrc(我已经验证$ 1是有效路径),但问题是cd是shell构建,所以它是一个递归循环(cd总是指向修改的cd).我们没有cd的elf文件(通常我们有其他命令即scp或其他命令).那我该怎么做呢?此外,如果shopt -s cdspell支持,那么我还需要在$ 1的参数中使用cd拼写路径.

Ror*_*ter 6

你想要"内置"命令;

内置shell-builtin [参数]

执行指定的shell内置,传递参数,并返回其退出状态.这在定义一个名称与shell内置函数相同的函数时非常有用,它保留了函数内置函数的功能.cd builtin通常以这种方式重新定义.如果shell-builtin不是shell内置命令,则返回状态为false.

来自:http://linux.die.net/man/1/bash

所以,你可能有类似的东西(未经测试,也没有bash方便);

function cd() {
    builtin cd $1 \
        && test -e .bashrc \
        && source .bashrc
}
Run Code Online (Sandbox Code Playgroud)