在 Snow Leopard 上输入/cd-ing 目录时,如何自动运行 shell 命令/脚本?

Mar*_*ltz 7 command-line shell-script rvm macos

如果答案很明显,我很抱歉,但我还没有找到答案(可能是因为我搜索的术语不正确)。

我在运行 Snow Leopard 的 Mac 上,我想知道当我输入/cd 到该目录时是否可以自动运行 shell 命令(或脚本)。

一个更好地说明我的问题的例子:我使用RVM来管理 Ruby 的版本。它对它的项目.rvmrc文件采用了类似的策略。这些文件在输入它们所在的目录时运行,以便为该特定项目使用正确版本的 Ruby。

我想做类似的事情,以便在输入包含目录的文件时显示 todo.txt 文件的内容。

Dan*_*eck 8

将以下内容添加到您的~/.bash_profile:

function cd {
    # actually change the directory with all args passed to the function
    builtin cd "$@"
    # if there's a regular file named "todo.txt"...
    if [ -f "todo.txt" ] ; then
        # display its contents
        cat todo.txt
    fi
}
Run Code Online (Sandbox Code Playgroud)

可能你已经有一个类似的功能cd——只要扩展那个功能来打印它的内容(todo.txt如果它存在)。

  • @Daniel 我通过在 ~/.rvm/hooks/ 目录中创建一个名为“after_cd”的文件来解决这个问题,该文件在调用 `cd` 函数时由 RVM 本身运行。如果有人对 RVM 如何处理目录更改感兴趣,那么它的创建者可以找到一个很好的答案 [here](http://stackoverflow.com/questions/5605277/how-does-rvm-detect-when-youve-changed-directories ) (2认同)