Linux Bash脚本使用";从另一个文件中提取变量凭据;。“文件名”;
在Windows10上运行Ubuntu18.04子系统,但也尝试在Ubuntu18.04谷歌云虚拟机上运行 我已经意识到,将我的登录凭证烘焙到脚本中是一个相当愚蠢的想法,不仅是因为安全风险,而且因为如果我更改密码,我将不得不编辑每个脚本 我发现,当我使用“.file”运行脚本时,我应该能够拥有一个包含我的凭据的文件,并将它们“内联”起来,但是当我运行脚本时,它只会返回一个错误,即找不到该文件 在我运行脚本的目录上使用Linux Bash脚本使用";从另一个文件中提取变量凭据;。“文件名”;,linux,bash,ubuntu-18.04,windows-subsystem-for-linux,Linux,Bash,Ubuntu 18.04,Windows Subsystem For Linux,在Windows10上运行Ubuntu18.04子系统,但也尝试在Ubuntu18.04谷歌云虚拟机上运行 我已经意识到,将我的登录凭证烘焙到脚本中是一个相当愚蠢的想法,不仅是因为安全风险,而且因为如果我更改密码,我将不得不编辑每个脚本 我发现,当我使用“.file”运行脚本时,我应该能够拥有一个包含我的凭据的文件,并将它们“内联”起来,但是当我运行脚本时,它只会返回一个错误,即找不到该文件 在我运行脚本的目录上使用ls,包含: test.sh 凭证 “凭证”文件内容 错误消息 我试着在脚本
ls
,包含:
- test.sh
- 凭证
有人能确认我在这里遗漏了什么/不知道什么,或者给我指一些可能有用的文档吗?这是我第一次尝试这样做,如果这是一个基本问题,我道歉
使用路径查找来查找由其参数命名的文件。由于当前工作目录通常不在您的路径
(也不应该在该路径中),
将找不到该文件。相反,使用
. ./credential
绕过路径
查找
但这并不安全,因为现在您只能从正确的目录运行脚本。将
credential
放入路径上的目录中,或者使用绝对路径指定凭证
的位置。您可以检查.netrc是否适用于您基本检查:您是否从您的凭证
文件所在的文件夹运行脚本?运行test.sh
时的当前目录是什么?运行它的确切命令是什么?其中的目录是凭证
。请回答您的问题以添加此信息,不要在评论中回答。@Poshi是的,我正在与test.sh
脚本相同的文件夹中运行凭证文件
。请注意。文件名
在路径
中搜索文件名
。如果路径
不包含
,则在当前目录中找不到文件名
。您可能需要使用类似于的东西/文件名
或$(dirname$0)/filename
,具体取决于当前工作目录中是否有filename
,或者与调用脚本位于同一目录中。如果credential
预期与调用脚本位于同一目录中,则可以使用$(dirname$0)/凭证
。。。。除了你应该引用它的健壮性:。“$(目录名“$0”)”/credential
#!/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