|
本帖最后由 pika02 于 2022-10-26 16:29 编辑
官方的安装方式推荐把一些命令丢进.bashrc,包括
- export OMP_STACKSIZE=200M
- ulimit -s unlimited
- export Multiwfnpath=/home/你的用户名/你的Multiwfn目录
- export PATH=$PATH:/home/你的用户名/你的Multiwfn目录
复制代码
(按照实际情况修改)
.bashrc是一个特殊的脚本文件,每次打开一个bash终端窗口时,便会新建一个bash shell(非登录shell)并且执行这些命令,用来初始化环境。
这几个export设置了几个环境变量,以及堆栈大小为无限
然而这样做可能会出现问题,比如在已经设置了ulimit -s unlimited的情况下,一些其他程序可能会翻车,比如winecfg
我当年就踩过这个坑,我说怎么winecfg老是报错
那么能不能只在想调用Multiwfn时才执行这些命令来初始化shell环境呢?
方法1
把上面这些语句包装成函数,也就是在.bashrc里把它们修改成:
- mtf(){
- export OMP_STACKSIZE=200M
- ulimit -s unlimited
- export Multiwfnpath=/home/你的用户名/你的Multiwfn目录
- export PATH=$PATH:/home/你的用户名/你的Multiwfn目录
- }
复制代码
这个函数名mtf是任意的,你可以改成任何你喜欢的名字,甚至改成emoji都可以,只要不跟别的命令冲突
如果你想用Multiwfn干一些活,只需要打开终端,输入mtf,你的环境就初始化好了,Multiwfn可执行文件也在你的PATH里面了,你可以跟往常一样干活。
方法2
每次打开终端后想用Multiwfn干活儿都得敲mtf,那有没有更懒的方法呢?
答案就是用一个脚本,代替Multiwfn主程序被调用。
创建一个脚本,内容如下
- export OMP_STACKSIZE=200M
- ulimit -s unlimited
- export Multiwfnpath=/home/你的用户名/你的Multiwfn目录
- /home/你的用户名/你的Multiwfn目录/Multiwfn "$@"
复制代码
调用脚本时,bash会生一个“孩子”,称为子shell,脚本前3行执行子shell的环境初始化,最后一行用绝对路径调用真正的Multiwfn可执行文件来干活,"$@"(包括双引号!)用来传递参数给Multiwfn
Linux有一个好,脚本能不能运行跟有没有后缀没关系,你可以给脚本取名叫不带后缀的Multiwfn(便于兼容已经写好的脚本),放在任何PATH目录里,然后.bashrc里面那些初始化Multiwfn环境的东西就可以删掉了,保持.bashrc的干净
如果你给脚本取名叫Multiwfn,那么你直接在终端里敲Multiwfn就能干活儿了,还能把要打开的文件名作为参数直接打开,比如Multiwfn file.xyz
整个脚本就是一个套娃,对于用户或者其他脚本而言,外面的娃看上去是一个可执行的Multiwfn,实际上外面的娃只负责创建工作环境,真正干活儿的是里面的娃
个人建议,你可以在自己的家目录里创建一个bin文件夹,然后.bashrc里面加上
- export PATH=$PATH:/home/你的用户名/bin
复制代码 这样把一些常用脚本或者别处下载来的二进制可执行文件扔到这个bin里,想运行谁就运行谁
|
评分 Rate
-
查看全部评分 View all ratings
|