在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 -a
,hostname
,hostid
和hostnamectl
,who
,groups
,stat /usr/share/zoneinfo
和{{ 1}}在控制台和脚本中是相同的。 stat /usr/share/zoneinfo/UTC
可从脚本访问。我认为我不需要显示输出,因为它很长,而且我的错误已经发现。
我应该自己写一个答案使问题得到回答并完成吗?