命令在终端中运行,但在脚本中不起作用

时间:2019-09-03 08:27:15

标签: bash shell linux-mint

在Linux Mint上,命令“ timedatectl”可以在终端上正常运行,但不能在bash脚本中运行。我认为我犯了一些非常愚蠢的错误,因为我是脚本编写的新手,但我自己找不到它。

#!/bin/bash
timedatectl set-timezone UTC
timedatectl status

打印出

Failed to set time zone: Invalid time zone 'UTC'
Unknown operation status

相同的命令在终端上也可以正常工作,并且可以设置时区并打印出时间和时间设置。

UPD:

which timedatectl

打印出

/usr/bin/timedatectl

,但是将此完整路径添加到脚本中的调用不会更改输出。 尝试从终端成功设置另一个时区(时区更改),但是从脚本失败。 (Failed to set time zone: Invalid time zone 'Europe/Paris'

echo $PATH返回

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

系统不要求密码来从终端执行这些命令。

UPD2:感谢Whydoubt的评论,我发现了问题所在。 我当时把脚本叫做

bash script1.sh

但是在评论之后,我试图称呼它

./script1.sh

得到

bash: ./script1.sh: /bin/bash^M: bad interpreter: No such file or directory

所以我意识到问题出在换行符号上(原始脚本是在Windows机器上使用Notepad ++创建的)。用xed重新键入脚本后,一切都按预期开始工作。

uname -ahostnamehostidhostnamectlwhogroupsstat /usr/share/zoneinfo和{{ 1}}在控制台和脚本中是相同的。 stat /usr/share/zoneinfo/UTC可从脚本访问。我认为我不需要显示输出,因为它很长,而且我的错误已经发现。

我应该自己写一个答案使问题得到回答并完成吗?

0 个答案:

没有答案
相关问题