记一个很有意思的PWD问题

Rhilip 2023-06-17 PM 3311℃ 2条

很久很久以前,我写了一个脚本来加密备份些下载好的东西,并使用了crontab定期运行。其代码类似如下

#!/bin/bash

PWD="xxxxxxxxx"
FOLDER="/data/xxxxxxx/"
FILE=/tmp/xxxxxxxx_`date +%Y%m%d`.zip

cd ${FOLDER}

zip -r ${FILE} ./ -P ${PWD} -m

从脚本上看倒是没啥问题,但在我这次想要从里面提取文件时,却发现使用脚本中的密码出错。百思不得其解的我尝试在终端中输入了

root@home:~# PWD="xxxxxxxxx"
root@home:xxxxxxxxx# echo ${PWD}
xxxxxxxxx
root@home:xxxxxxxxx# cd /
root@home:/# echo ${PWD}
/

结果神奇的事情出现了,对 ${PWD} 赋值的行为改变了当前显示的文件夹名称,并且在cd之后, ${PWD} 的值自动被重写为当前的目录值了,而不是我最初指定的那个值了。一番搜索后才知道,原来 ${PWD} 是一个环境变量,和 pwd 命令几乎类似,指向了当前的工作目录。而我在脚本中,先对PWD变量进行赋值,随后使用cd切换了工作目录,导致 $PWD 的值在切换后实际和 ${FOLDER} 值相同。

标签: none

非特殊说明,本博所有文章均为博主原创。

评论啦~



已有 2 条评论


  1. BFDZ
    BFDZ

    我看到pwd第一反应是指定工作目录,有时脚本如果要读写特定位置的文件,而路径没有写全,就会出现找不到文件的问题,同样导致脚本运行出错

    回复 2023-06-17 23:10
  2. haihai
    haihai

    人才~

    回复 2024-05-11 15:04