Bla*_*way 2 command-line bash scripts 14.04
我有一个简单的脚本,可以为工作设置 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
Run Code Online (Sandbox Code Playgroud)
这将允许用户运行脚本并立即能够登录到 cvs 并下载代码。问题是脚本没有资源 .bashrc。我试过使用
exec bash
Run Code Online (Sandbox Code Playgroud)
和
. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
但我仍然收到一条终端消息,说 CVSRoot 到达时未设置
cvs login
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?如果有必要,我正在使用 Ubuntu 14.04。
几件事:
.bashrc如果 shell 不是交互式的,则默认值不执行任何操作:
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
Run Code Online (Sandbox Code Playgroud)您的脚本正在使用/bin/sh. 不要来源.bashrc。任何特定于 bash 的东西都可能导致问题。正如 steeldriver 指出的那样,/bin/sh没有source:
$ sh -c 'source ~/.bashrc'
sh: 1: source: not found
Run Code Online (Sandbox Code Playgroud)export除了添加到之外,为什么不只是变量.bashrc?