如何在用户登录时在单独的 shell 交互实用程序(例如 iTerm2)中启动命令文件(例如 *.sh)?

如何在用户登录时在单独的 shell 交互实用程序(例如 iTerm2)中启动命令文件(例如 *.sh)?

iTerm2 是一款非常棒的实用程序,它使我与命令行的交互变得更加容易。我每天都会运行许多更新命令,如果这些命令可以在我的用户登录时启动,那就太棒了。我知道,为了在用户登录事件中运行脚本,必须在 /System/Library/StartupItems 创建一个目录,并且要运行的脚本与目录同名(例如 update_sys/update_sys.sh)。这之后我遇到的两个主要问题是 1) 执行命令时没有终端窗口显示任何输出,2) 我不知道如何将 iTerm2(或任何其他实用程序)指定为运行脚本的主要终端实用程序。我确实将 iTerm2 设置为默认终端实用程序,但是一些已执行的脚本仍将在终端中启动。

任何帮助是极大的赞赏!

(如果我关于如何向用户登录事件添加命令的概念不正确或者有更简单的方法,请告诉我!)

答案1

我从未使用过 iTerm(或 Mac OS);但由于 iTerm 是一个终端仿真器,它可能不适合安排任务。在 *nixiod 系统上,登录脚本通常从诸如~/.profile、之类的文件以及诸如和之/etc/profile类的 shell 特定文件执行。您可以在 shell 的手册页中阅读有关它们的信息(例如~/.bashrc/etc/bash.bashrcman 1 bash)。

答案2

iTerm 允许您以交互方式运行这些脚本,并且当交互式会话将输出发送到屏幕时,您可以看到结果。

许多程序也可以作为后台进程执行。

查看输出的最佳方式通常是手动将其附加到日志中。如有必要,使用 echo 语句显示正在运行的命令的位置和内容。对于来自内置命令的输出流。

我认为你可能想要的详细信息如下:https://unix.stackexchange.com/questions/74520/can-i-redirect-output-to-a-log-file-and-background-a-process-at-the-same-time

即,some_cmd > some_file 2>&1 &将标准输出重定向到日志文件。

相关内容