当放入目录时触发命令

时间:2014-01-16 11:22:29

标签: bash .bash-profile

我最近开始在Go中编写很多应用程序,当你想编译程序时需要设置一些环境变量。

我正在使用bash,并希望在每个项目目录中使用一个文件来设置任何环境变量或运行所需的任何其他命令。

因此,我们的想法是拥有一个名为.workspace的文件,该文件中包含特定于该特定项目的任何命令。当我进入一个触发了命令的目录时,我不必手动设置环境变量或获取.workspace文件。

我曾想过别名cd来执行cd,然后检查是否存在.workspace文件,以及是否存在来源文件。它似乎并不优雅,所以我想知道在走这条路之前是否还有其他选择。

我知道rvm - ruby​​版本管理器 - 执行类似的操作,它会检测到.rvmrc文件并使用它来为该文件夹设置所需的ruby版本。

1 个答案:

答案 0 :(得分:2)

因此,最好的方法是将cd别名为检查.workspace文件是否存在的函数,如果存在,请将其归来。

#!/bin/bash

function workspace_cd() {
    cd $@ && [ -f ".workspace" ] && source .workspace
}

alias cd="workspace_cd"

因此,如果您在.profile中提供此信息,则会检查.workspace文件并将其获取。我建议的用途是将环境导出放在文件中:

export GOPATH=/Users/lg/Documents/Projects/SomeGoProject
export PATH=$PATH:$GOPATH/bin