前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为shell脚本创造相对一致的环境变量--以MacOS为例

为shell脚本创造相对一致的环境变量--以MacOS为例

原创
作者头像
叶子Tenney
发布2023-10-05 14:38:24
2340
发布2023-10-05 14:38:24
举报

引言

写个脚本自动运行的时候偶尔会发生一种输出文件乱码或者找不到软件的情况, 很显然是由于sh文件运行环境和terminal运行环境不一致导致的, 因此只要指定本机的运行环境, 就可以使脚本正常运行.

过程

获取env文件

首先, 我们可以在terminal中运行env来获得各种参数, 比如我的就是:

显然, 里面有对于脚本有用的, 比如LC\_ALL=en\_US.UTF-8;LANG=en\_US.UTF-8就是输出文件乱码的解决方法,

PATH=...就是找不到软件的解决办法.

而其他大多数没有用的,

但是无所谓, 因为我很懒而且不在乎性能, 所以我全都要.

咱们可以比较一下在terminal输出的和定时脚本输出的区别.

使用env > ~/env.txt可以把环境参数输出到自己的根目录.

我们新建一个sh脚本:

代码语言:shell
复制
#!/bin/bash

env > ~/env.txt

我的脚本名字是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行:

所以保存下来terminalenv文件以下次使用是挺方便的.

读取env文件

代码语言:shell
复制
# Set environment variables

# 检查 env.txt 文件是否存在

if [ -f "${HOME}/env.txt" ]; then

  # 如果 env.txt 存在,则运行相应的命令

  while IFS='=' read -r key value; do

    echo "$key=$value"

    export "$key"="$value"

  done < "${HOME}/env.txt"

else

  # 运行其他命令

  echo "env.txt 文件不存在"

fi

结论

通过这样的方法, 可以获得相对一致的运行环境, 保证脚本正常运行.

引用

  1. 【已解决】linux终端出现中文乱码_export lang="en_us";export language="en_us";export-CSDN博客

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 过程
    • 获取env文件
      • 读取env文件
      • 结论
      • 引用
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档