linux定时任务shell脚本开头如下 cd ~ . .bash_profile 定时任务执行后提示找不到.bash_profile啥情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux定时任务shell脚本开头如下 cd ~ . .bash_profile 定时任务执行后提示找不到.bash_profile啥情况相关的知识,希望对你有一定的参考价值。

执行cd~后我输出了路径,在这个路径下有.bash_profile文件的,在这个路径下放置一个sh文件如:
cd ~
./1.sh --这个可以输出结果的
. .bash_profile --提示找不到文件
求高手解答一下
cd ~ --路径是/home/db2inst1
. /home/db2inst1/.bash_profile --输入绝对路径就可以执行
什么原因,第一步cd ~就是已经进入/home/db2inst1了,然后. .bash_profile就不能执行,什么情况

.bash_profile 是没错的,以点号开头的文件是隐藏文件。

通常就是在用户目录下的。
先去掉 ./1.sh 看看是否能执行,如果这样可以,说明就是 ./1.sh 执行过程中改变了当前路径。追问

去掉执行不成功,./1.sh是执行不成功后我加进去的,就是想试一下是否在当前路径。

另外,你知道. .bash_profile是什么意思吗

追答

第一个点相当于source命令,在当前shell执行脚本,脚本中对环境变量(如当前路径)的改变将在脚本执行结束后被保留,即会影响当前shell,.bash_profile是用户profile文件。

如果不加点号即不用source命令执行,脚本执行结束后对当前shell无影响。

建议不要用cd,直接这样执行吧:

. ~/.bash_profile

追问

多谢高手指点,按照你说的那样果然可以执行。只是不理解先cd ~,再执行为什么不行。

追答

用 env | grep PATH 看下你的环境变量中的PATH设定。
若不加路径执行脚本,shell默认会搜索PATH中的路径。若PATH中没有包含/home/db2inst1 这个路径,则找不到脚本。

所以,任何时候,在执行脚本时带上路径都是一个好习惯。

参考技术A 什么叫..bash_profile,不是应该./bash_profile的?追问

.bash_profile是个文件啊 前面加个点再加空格,然后加.bash_profile,我也不知道是什么意思,是读取这个文件吗

追答

不是,读取这个文件的话,应该这样
source .bash_profile

如何设置PowerShell脚本定时执行

参考技术A 不管是Windows还是Mac
OS还是Linux,凡是定时执行的,一般都是靠计划任务。
以在Windows中运行Powershell脚本为例:
1.
写好你的脚本,比如叫a.ps1
2.
创建
定时任务
,在动作页设置:
运行程序
powershell
,参数
-File X:\..\a.ps1 -ExecutionPolicy ByPas3.
其余项根据你的需求设置好,到设定的时间就可以运行了。
P.S.
不要把运行时间设在过去。

以上是关于linux定时任务shell脚本开头如下 cd ~ . .bash_profile 定时任务执行后提示找不到.bash_profile啥情况的主要内容,如果未能解决你的问题,请参考以下文章

Linux定时执行shell

Linux环境下Shell调用MySQL并实现定时任务

Linux定时对日志批量打包Shell脚本及定时任务crontab 详细用法

linux下定时任务以及简单shell脚本的编写

如何设置PowerShell脚本定时执行

Linux添加shell(.sh)脚本并添加定时任务