我正在尝试在Cygwin上运行一个写
的脚本alias vi=vim
export USER=esarpka
export DEVENVHOME=${DEVENVHOME:-/home/USER/CPM_WORKAREA/devenv.x}
. $DEVENVHOME/sourceme.sh
.bashrc
中的,同样将此内容写入.bash_profile
:
EDITOR=vim
export EDITOR
. [ -r /home/esarpka/.bashrc ] && . /home/USER/.bashrc
但剧本是:
echo "alias vi=vim" >> .bashrc
echo export USER=$signumid >> .bashrc
echo 'export DEVENVHOME=${DEVENVHOME:-/home/'$signumid'/CPM_WORKAREA/devenv.x}' >> .bashrc
echo '. $DEVENVHOME/sourceme.sh' >> .bashrc
echo "EDITOR=vim" >> .bash_profile
echo "export EDITOR" >> .bash_profile
echo ". [ -r $HOME/.bashrc ] && . $HOME/.bashrc" >> .bash_profile
但是当脚本再次运行时,它只会在.bashrc
和.bash_profile
中添加一组行。我也尝试过使用
echo ". [ -r $HOME/.bashrc ] && . $HOME/.bashrc" > .bash_profile
例如,确保脚本被覆盖,而不是一次又一次地追加行。但是当以这种方式运行echo时,文件中只写入几行,文件变空。
答案 0 :(得分:0)
>>运算符附加到文件。你应该使用>在第一个echo上创建文件。
一个易于维护和调试的解决方案是将master-bashrc存储在某处,然后简单地使用cp创建.bashrc,而不是使用echo语句。
答案 1 :(得分:0)
您可能应该查看您的测试是否已存在于文件中,并且仅在不存在时才添加它。您可以通过在文件中留下标记注释行来简化:
# Begin automatic modification
…lines as above…
# End automatic modification
然后您的编写脚本可以搜索字符串并决定是否添加材料(加上标记字符串):
marker="automatic modification"
if grep -q "^# Begin $marker" .bashrc
then
{
echo "# Begin $marker ($(date +'%Y-%m-%d %H:%M:%S'))"
echo "alias vi=vim"
echo export USER=$signumid
echo 'export DEVENVHOME=${DEVENVHOME:-/home/'$signumid'/CPM_WORKAREA/devenv.x}'
echo '. $DEVENVHOME/sourceme.sh'
echo "# End $marker"
} >> .bashrc
fi
如果您选择不使用标记,则可以或多或少地查找添加的行。
请注意,修改其他人.bash_profile
或.bashrc
是一项敏感的业务(尽管您可以自己做自己喜欢的事情)。有些人 - 例如我,特别是 - 如果其他人坚持要修改他们的个人资料或其他启动文件,他们会非常沮丧。当然,我将我的关键配置文件(例如配置文件)保留在版本控制之下,这样我就可以更轻松地从这种滥用中恢复,但是对于我的启动文件,你不会受欢迎。