![获取环境变量时出现“未找到命令”错误](https://linux22.com/image/1014006/%E8%8E%B7%E5%8F%96%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9C%E6%9C%AA%E6%89%BE%E5%88%B0%E5%91%BD%E4%BB%A4%E2%80%9D%E9%94%99%E8%AF%AF.png)
我保存了一份我的环境的良好副本,/root/.env
当我使用 cron 作业时,我会导入该文件,因为我使用它们来运行Expect
脚本,如果没有 TERM 和其他一些脚本,这些脚本将无法运行(?)。我这样做是这样的:
set -o allexport; source /root/.env; set +o allexport
它可以工作,但是 Cron 还会通过电子邮件将 .env 文件的内容作为以下列表发送给我:找不到命令错误:
/root/.env: line 4: 34:ln=01: command not found
/root/.env: line 4: 36:mh=00:pi=40: command not found
/root/.env: line 4: 33:so=01: command not found
/root/.env: line 4: 35:do=01: command not found
/root/.env: line 4: 35:bd=40: command not found
/root/.env: line 4: 33: command not found
/root/.env: line 4: 01:cd=40: command not found
/root/.env: line 4: 33: command not found
/root/.env: line 4: 01:or=40: command not found
/root/.env: line 4: 31: command not found
还有这个:
/root/.env: line 18: fg: no job control
我如何让它停止尝试将文件的内容解释为命令?
编辑:这是 .env:
root@____:/home/____# cat ~/.env
SHELL=/bin/bash
TERM=vt100
USER=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
SUDO_USER=abdmin
SUDO_UID=1000
USERNAME=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
PWD=/home/abdmin
LANG=en_CA.UTF-8
SHLVL=1
SUDO_COMMAND=/bin/su
HOME=/root
LANGUAGE=en_CA:en
LOGNAME=root
LESSOPEN=| /usr/bin/lesspipe %s
SUDO_GID=1000
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
答案1
感谢有用的评论,我能够删除我不需要的变量,直到 cron 停止抱怨。
command not found
LS_COLORS
通过从我的 .env 文件中删除该行,错误被消除了。fg: no job control
据我了解,该错误是由以下两行引起的:
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s
因为 shell 解释%s
为fg
。
这是我的情况所特有的,但是它使我的 cron 作业与我的预期脚本一起工作,所以我对这个结果很满意。