如何使bash_profile函数在bash_profile中运行,或者稍后由用户调用?

时间:2016-10-27 10:14:18

标签: bash function .bash-profile

我的意思是,在~/.profile中,函数doit会在用户登录时说Welcome,但在用户稍后执行doit时会说出其他字词。

doit() {
    if some_test_here; then
        echo "Running within ~/.profile. Welcome."
    else
        echo "Called by user."
    fi
}

doit

我认为~/.profile在Mac上对于~/.bash_profile在Linux上更好。所以我以~/.profile为例。

1 个答案:

答案 0 :(得分:0)

两种方法是传递参数或检查环境。

使用仅由.profile中的呼叫使用的参数。

doit () {
    if [ "${1:-onlogin}" -eq onlogin ]; then
        echo "Running from .profile"
    else
        echo "Called by user"
    fi
}

doit onlogin  # from .profile
doit          # ordinary call

检查环境以查找.profile

设置的变量
doit () {
  if [ "${_onlogin}" ]; then
    echo "Running from .profile"
  else
    echo "Called by user"
  fi
}

onlogin=1 doit    # from .profile; value can be any non-empty string
doit              # ordinary call