Bash 使用“.filename”从另一个文件中提取可变凭据的脚本
Bash script to pull variable credentials from another file using ". filename"
运行 Ubuntu Windows 10 上的 18.04 子系统,但也尝试在 Ubuntu 18.04 Google 云虚拟机上执行此操作。
我意识到将我的登录凭据放入我的脚本中是一个相当愚蠢的想法,不仅是为了安全风险,而且因为如果我更改密码,我将不得不编辑每个脚本...
我发现当我 运行 我的脚本使用“.file”时,我应该能够拥有一个包含我的凭据的文件并将它们 "inline",但是当我 运行 我的脚本只是 returns 找不到文件的错误。
在目录中使用 ls
运行 脚本来自:
- test.sh
- 凭据
"credential" 文件内容
USER=<username>
PWD=<password>
test.sh
的当前脚本
#!/bin/bash
set -eu
DS=$(date "+%Y-%m-%d" -d "11 days ago")
DE=$(date "+%Y-%m-%d" -d "1 day ago")
. credential
rm -f cookiejar
curl /dev/null -s -S -L -f -c cookiejar 'https://url/auth/authenticate' -d name=$USER -d passwd=$PWD
错误信息
+ set -eu
+ date +%Y-%m-%d -d 11 days ago
+ DS=2020-01-05
+ date +%Y-%m-%d -d 1 day ago
+ DE=2020-01-15
+ account=465
+ . credential test.sh: 9: .: credential: not found
我试过弄乱脚本“.credential”行之间的空格,并试图找出我可能在网上做错了什么,但未能 google 正确搜索找到相关答案。
有人可以确认我在这里遗漏/不知道的内容,或者向我指出可能有帮助的文档吗?这是我第一次尝试做这样的事情,如果这是一个基本问题,我深表歉意。
.
使用路径查找来查找由其参数命名的文件。由于当前工作目录通常不在您的 PATH
中(也不应该),因此 .
将找不到该文件。相反,使用
. ./credential
绕过PATH
查找。
不过,这并不是很安全,因为现在您只能 运行 来自正确目录的脚本。将 credential
放在 PATH
上的一个目录中,或者使用绝对路径指定 credential
所在的位置。
运行 Ubuntu Windows 10 上的 18.04 子系统,但也尝试在 Ubuntu 18.04 Google 云虚拟机上执行此操作。
我意识到将我的登录凭据放入我的脚本中是一个相当愚蠢的想法,不仅是为了安全风险,而且因为如果我更改密码,我将不得不编辑每个脚本...
我发现当我 运行 我的脚本使用“.file”时,我应该能够拥有一个包含我的凭据的文件并将它们 "inline",但是当我 运行 我的脚本只是 returns 找不到文件的错误。
在目录中使用 ls
运行 脚本来自:
- test.sh
- 凭据
"credential" 文件内容
USER=<username>
PWD=<password>
test.sh
的当前脚本#!/bin/bash
set -eu
DS=$(date "+%Y-%m-%d" -d "11 days ago")
DE=$(date "+%Y-%m-%d" -d "1 day ago")
. credential
rm -f cookiejar
curl /dev/null -s -S -L -f -c cookiejar 'https://url/auth/authenticate' -d name=$USER -d passwd=$PWD
错误信息
+ set -eu
+ date +%Y-%m-%d -d 11 days ago
+ DS=2020-01-05
+ date +%Y-%m-%d -d 1 day ago
+ DE=2020-01-15
+ account=465
+ . credential test.sh: 9: .: credential: not found
我试过弄乱脚本“.credential”行之间的空格,并试图找出我可能在网上做错了什么,但未能 google 正确搜索找到相关答案。
有人可以确认我在这里遗漏/不知道的内容,或者向我指出可能有帮助的文档吗?这是我第一次尝试做这样的事情,如果这是一个基本问题,我深表歉意。
.
使用路径查找来查找由其参数命名的文件。由于当前工作目录通常不在您的 PATH
中(也不应该),因此 .
将找不到该文件。相反,使用
. ./credential
绕过PATH
查找。
不过,这并不是很安全,因为现在您只能 运行 来自正确目录的脚本。将 credential
放在 PATH
上的一个目录中,或者使用绝对路径指定 credential
所在的位置。