我对 Linux 非常陌生,并且在 CentOS 中应该是一个非常简单的 Bash 脚本时遇到了问题。
#! /bin/bash
# script to restore the cognos rds from snapshot
export AWS_RDS_HOME=/opt/aws/apitools/rds
export PATH=$PATH:$AWS_RDS_HOME/bin
export AWS_CREDENTIAL_FILE=$AWS_RDS_HOME/credential-file-path.template
echo $AWS_RDS_HOME
echo $PATH
echo $AWS_CREDENTIAL_FILE
rds-delete-db-instance mydb --final-db-snapshot-identifier mydb-daily-$(date +%Y)-$(date +%m)-$(date +%d) --force -region eu-west-1
Run Code Online (Sandbox Code Playgroud)
我添加了 echo 语句,以便我可以看到发生了什么。我运行时的输出
sh myscript.sh
Run Code Online (Sandbox Code Playgroud)
是:
/opt/aws/apitools/rds
/bin/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/bin:/opt/aws/apitools/rds
/credential-file-path.template
rds-delete-db-instance: command not found
Run Code Online (Sandbox Code Playgroud)
因此,当我引用在同一脚本中设置的其他环境变量时,导出命令似乎不起作用。
我哪里错了?
更新:我已经尝试了下面的建议,但仍然不高兴。运行 bash -x 很有趣。每当我尝试连接时,下面的 "\r" 是否会在后面?例如
#! /bin/bash
# test script
export AWS_RDS_HOME=/opt/aws/apitools/rds
export PATH=$PATH:$AWS_RDS_HOME/bin
export AWS_CREDENTIAL_FILE=$AWS_RDS_HOME/credential-file-path.template
echo $AWS_RDS_HOME
echo $PATH
echo $AWS_CREDENTIAL_FILE
Run Code Online (Sandbox Code Playgroud)
结果是: …
bash centos environment-variables export amazon-web-services