我正在尝试在CentOS下自动编译Mono,为此我正在编写一个bash脚本。但我对此很陌生,我不确定这里的最佳做法是什么。
这就是我的脚本现在的样子:
# Variables
monoRepoUrl='http://download.mono-project.com/sources/mono'
monoPackageName='mono-2.10.8'
monoSubdir=$monoPackageName
srcDirectory='/usr/local/src'/$monoSubdir
monoUrl=$monoRepoUrl'/'$monoSubdir'/'$monoPackageName".tar.bz2"
# Prepare environment
echo ''
echo 'Installing pre-requisites packages'
echo ''
yum -y install gcc-c++ make httpd-devel gettext bison
######### Mono core stuff #########
echo ''
echo 'Getting Mono'
echo ''
wget $monoUrl
tar jxvf $monoPackageName.tar.bz2
$srcDirectory/configure -prefix=/opt/$monoPackageName; $srcDirectory/make; $srcDirectory/make install
echo export PKG_CONFIG_PATH=/opt/$monoPackageName/lib/pkgconfig:$PKG_CONFIG_PATH>>~/.bash_profile
echo export PATH=/opt/$monoPackageName/bin:$PATH>>~/.bash_profile
source ~/.bash_profile
echo ''
echo 'End of Mono installation'
echo ''
但是,我在这里遇到的问题是目录的更改不起作用 - 脚本似乎有自己的进程。这样做更优雅的方法是什么,保持简单(例如,我宁愿不使用函数,除非它是绝对必要的)?
使用绝对路径到处工作?在bash中这种情况的最佳做法是什么?
答案 0 :(得分:-1)
如果您正在编写bash脚本,请确保始终使用绝对路径,bash不接受或读取相对路径。因为您是新手,请确保您还指定命令的绝对路径,例如,yum可能不会有时工作。检查哪个yum首先获取yum的绝对路径,并在bash脚本中指定绝对路径。确保您同时也为脚本提供了执行权限