设置变量后重新加载.bashrc--shell脚本

设置变量后重新加载.bashrc--shell脚本

我有一个简单的脚本,用于设置 CVS 存储库(和其他东西)以供工作使用。该脚本有一个函数,应该设置存储库,但无法正确重新加载 .bashrc。代码如下:

#!/bin/sh
setupCVS()
{
   echo '#Environment variables' >> ~/.bashrc
   echo 'export CVSROOT=:<server path>' >> ~/.bashrc
   source ~/.bashrc
   cvs login
   cvs co <directories>
}

<other code>
setupCVS

这将允许用户运行脚本并立即登录 cvs 并下载代码。问题是脚本不提供 .bashrc。我尝试使用

exec bash

. ~/.bashrc

但当它达到时,仍然收到一条终端消息说 CVSRoot 未设置

cvs login

有什么想法吗?如果有必要的话,我会使用 Ubuntu 14.04。

答案1

有几件事:

  • .bashrc如果 shell 不是交互式的,则默认不执行任何操作:

    # If not running interactively, don't do anything
    case $- in
        *i*) ;;
          *) return;;
    esac
    
  • 您的脚本正在使用/bin/sh。不要源.bashrc。任何特定于 bash 的东西都可能导致问题。正如steeldriver 指出的那样,/bin/sh没有source

    $ sh -c 'source ~/.bashrc'
    sh: 1: source: not found
    

export为什么除了添加到之外不只是变量.bashrc呢?

相关内容