别名不会在子 shell 之间继承,因此目前无法通过$SINGULARITY_ENVIRONMENT
or传递这些别名%environment
。
一种选择是将别名转换为函数:
从:
alias build_command='pushd build_dir && ./configure && make && make install && popd'
至:
build_command() { pushd build_dir && ./configure && make && make install && popd ; }
export -f build_command
但是,Singularity/bin/sh
默认使用初始环境处理,并且基于 Debian 的系统已/bin/sh
符号链接到/bin/dash
,并且 dash 不支持将函数导出到我发现的子 shell。如果使用 Debian 系列中的操作系统,您可能会被困在手动获取具有别名/函数的文件。
在%post
您的定义部分,您可以回显到$SINGULARITY_ENVIRONMENT
.
从文档:
%post
apt-get update && apt-get install -y netcat
NOW=`date`
echo "export NOW=\"${NOW}\"" >> $SINGULARITY_ENVIRONMENT
在你的情况下,你会这样做echo "alias something='something else' >> $SINGULARITY_ENVIRONMENT
。执行附加重定向很重要>>
,因为您不想破坏现有的环境文件。