sh-4.4$ 如何重新登录到我的默认 shell 终端?

sh-4.4$ 如何重新登录到我的默认 shell 终端?

当我打开 时gnome-terminal,它没有向我显示默认的 Bash shell,而是显示:

sh-4.4$

自从我添加DISPLAY=:0到我的crontab -e文件后,这种情况就开始发生,现在看起来如下:

DISPLAY=:0

0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/updates.sh
0 0,6,12,18 * * * /usr/bin/gnome-terminal -e /home/orschiro/bin/rclone.sh

还有有趣的:

sh-4.4$ ls -l /bin/sh
lrwxrwxrwx. 1 root root 4 18. Jun 10:30 /bin/sh -> bash

在此输入图像描述

答案1

我假设这是gnome-terminal从你的 cronjob 开始的。

绝对不需要运行里面的 cronjob 脚本gnome-terminal。这样做意味着如果gnome-terminal无法打开作业就会失败(如果您当时没有使用桌面,则可能会发生这种情况)。

只需使用

0 0,6,12,18 * * * "$HOME"/bin/updates.sh
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh

假设启用了本地电子邮件传送,脚本的任何输出都将通过电子邮件发送给您。要将输出保存到日志文件,请使用重定向:

0 0,6,12,18 * * * "$HOME"/bin/updates.sh >>"$HOME"/updates.log"
0 0,6,12,18 * * * "$HOME"/bin/rclone.sh  >>"$HOME"/rclone.log"

cronjobs 运行的环境与您通常通过图形桌面环境登录时的环境不同。一方面,您的默认 shell 可能未在SHELL环境变量中设置,这就是为什么gnome-terminal启动/bin/sh而不是bash(sh bash在您的系统上,但在作为 ) 调用时以 POSIX 兼容模式运行sh

登录图形桌面环境时,gnome-terminal照常打开将为您提供默认 shell。如果没有,那是因为有一个gnome-terminal-server由 cron 作业启动的进程正在运行。通过重新启动或使用 来终止此过程pkill -f gnome-terminal-server

也可以看看下面是 JdeBP 发表的评论

相关内容