【发布时间】:2020-01-16 14:40:50
【问题描述】:
在 Windows 10 上运行 Ubuntu 18.04 子系统,但也尝试在 Ubuntu 18.04 Google 云虚拟机上执行此操作。
我意识到将我的登录凭据写入我的脚本是一个相当愚蠢的想法,不仅是为了安全风险,而且因为如果我更改密码,我将不得不编辑每个脚本......
我发现当我使用“.file”运行我的脚本时,我应该能够拥有一个包含我的凭据的文件并将它们“内联”,但是当我运行我的脚本时,它只会返回一个错误,即该文件没找到。
在我运行脚本的目录上使用 ls 包含:
- test.sh
- 凭证
“凭证”文件内容
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”行之间的空格,并试图找出我可能在网上做错了什么,但无法正确地通过谷歌搜索找到相关答案。
有人可以确认我在这里遗漏/不知道的内容或指向我可能有帮助的文档吗?这是我第一次尝试做这样的事情,如果这是一个基本问题,我深表歉意。
【问题讨论】:
-
您可以检查 .netrc 是否适合您
-
基本检查:您是否从
credential文件所在的同一文件夹运行脚本? -
运行
test.sh时的当前目录是什么?您用来运行它的确切命令是什么?credential在哪个目录中。请edit您的问题添加此信息,不要在评论中回答。 -
@Poshi 是的,我在与
test.sh脚本相同的文件夹中运行credential file。 -
请注意,
. filename在PATH中搜索filename。如果PATH不包含.,则不会在当前目录中找到filename。您可能必须使用. ./filename或. $(dirname $0)/filename之类的东西,具体取决于您在当前工作目录中还是在与调用脚本相同的目录中具有filename。
标签: linux bash ubuntu-18.04 windows-subsystem-for-linux