作業用の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を使用しています。
いくつかのこと:
シェルがインタラクティブでない場合、デフォルトの.bashrc
は何もしません。
# 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
.bashrc
に追加するだけでなく、変数をexport
にしないのはなぜですか?