我已经编写了一个bash脚本来创建一个文件夹(如果该文件夹尚不存在),并且已经在我的环境文件中设置了变量,并在我的.sh文件中对其进行了引用
以下是我的脚本,我已在环境文件中添加了.sh文件中的变量。
#!/bin/bash
if [ ! -d "$checkfolder" ]; then
mkdir -p "$createfolder";
fi
我在/ etc / environment文件中设置了以下环境变量
checkfolder=/home/ubuntu/hello23
createfolder=/home/ubuntu/hello23
当我执行脚本时,出现以下错误:
ubuntu@:~/cicd$ ./createfolder.sh
mkdir: cannot create directory ‘’: No such file or directory
这是我写的普通脚本,可以运行并创建一个文件夹(如果不存在)
if [ ! -d /home/ubuntu/hello ]; then
mkdir -p /home/ubuntu/hello;
fi
这里的问题是什么,我应该进行哪些更改?
/etc/environment
并~/.pam_environment
在登录时读取。如果您刚刚编辑了这些文件,则所做的更改将不适用于当前会话。
如果要将更改应用于当前会话,则可以运行
. /etc/environment
在当前shell中设置变量。这仅在变量的值不包含任何shell特殊字符(空格,()[]{}\|&;<>~*?'"`$#
并且我可能会忘记一些字符)/etc/environment
时才有效,因为的语法只是shell语法的近似值。
如果您添加了新变量,而不仅仅是更改了它们的值,则还需要导出它们(VAR=value
在shell中仅创建一个shell变量,而不是环境变量)。
export MY_HOME checkfolder createfolder
或更一般地
export $(sed -n 's/^\([A-Za-z0-9_]*\)=.*/\1/p')
没有文件可以为每个新程序设置环境,因为这会破坏环境的意义,即每个进程都有其自己的,从父进程继承的进程。如果存在“全局环境文件”,则将无法在其他环境下运行程序。如果要进行全局配置,请阅读配置文件:
if [ -e ~/.my_application_configuration.sh ]; then
. ~/.my_application_configuration.sh
fi
有一种方法可以为每个bash脚本(仅bash脚本,而不是sh脚本)设置环境设置文件:将文件的完整路径放在环境变量中BASH_ENV
。如前所述,这通常是个坏主意。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句