![设置变量后重新加载.bashrc--shell脚本](https://linux22.com/image/990921/%E8%AE%BE%E7%BD%AE%E5%8F%98%E9%87%8F%E5%90%8E%E9%87%8D%E6%96%B0%E5%8A%A0%E8%BD%BD.bashrc--shell%E8%84%9A%E6%9C%AC.png)
我有一个简单的脚本,用于设置 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
呢?