为shell脚本创造相对一致的环境变量--以MacOS为例
引言
写个脚本自动运行的时候偶尔会发生一种输出文件乱码或者找不到软件的情况, 很显然是由于sh
文件运行环境和terminal
运行环境不一致导致的, 因此只要指定本机的运行环境, 就可以使脚本正常运行.
过程
获取env
文件
首先, 我们可以在terminal
中运行env
来获得各种参数, 比如我的就是:
显然, 里面有对于脚本有用的, 比如LC_ALL=en_US.UTF-8;LANG=en_US.UTF-8
就是输出文件乱码的解决方法,
而PATH=...
就是找不到软件的解决办法.
而其他大多数没有用的,
但是无所谓, 因为我很懒而且不在乎性能, 所以我全都要.
咱们可以比较一下在terminal
输出的和定时脚本输出的区别.
使用env > ~/env.txt
可以把环境参数输出到自己的根目录.
我们新建一个sh
脚本:
1 |
|
我的脚本名字是Untitled-1.sh
, 绝对路径是/Users/tenney/Downloads/Untitled-1.sh
.
在terminal
里面运行bash /Users/tenney/Downloads/Untitled-1.sh
得到env
文件, 大约有30行内容.
然后使用crontab -e
命令新建一个自动化, 内容是* * * * * bash /Users/tenney/Downloads/Untitled-1.sh
, 意思是每秒运行一次创造env
文件的脚本. 得到的文件如下, 可以看到仅有8行:
所以保存下来terminal
的env
文件以下次使用是挺方便的.
读取env
文件
1 | # Set environment variables |
结论
通过这样的方法, 可以获得相对一致的运行环境, 保证脚本正常运行.
引用
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment