ユーザーのログイン時に、別のシェル対話ユーティリティ (iTerm2 など) でコマンド ファイル (例: *.sh) を起動するにはどうすればよいですか?

ユーザーのログイン時に、別のシェル対話ユーティリティ (iTerm2 など) でコマンド ファイル (例: *.sh) を起動するにはどうすればよいですか?

iTerm2 は素晴らしいユーティリティで、コマンドラインとのやり取りがずっと簡単になります。私は毎日多くの更新コマンドを実行していますが、それらをユーザーのログイン時に起動できれば素晴らしいと思いました。ユーザーのログイン イベントでスクリプトを実行するには、/System/Library/StartupItems にディレクトリを作成し、実行するスクリプトをディレクトリと同じ名前 (例: update_sys/update_sys.sh) に作成する必要があることはわかっています。その後に発生する 2 つの主な問題は、1) コマンドを実行しても出力を表示するターミナル ウィンドウがないこと、2) iTerm2 (またはその他のユーティリティ) をスクリプトを実行するためのプライマリ ターミナル ユーティリティとして指定する方法がわからないことです。iTerm2 をデフォルトのターミナル ユーティリティとして設定していますが、実行されたスクリプトの一部はターミナルで起動されます。

どのような助けでも大歓迎です!

(ユーザー ログイン イベントにコマンドを追加する方法に関する私の考えが間違っている場合、またはもっと簡単な方法がある場合は、お知らせください!)

答え1

私はiTerm(またはMac OS)を使ったことはありませんが、iTermはターミナルエミュレータなので、タスクのスケジュールにはおそらく適していません。 *nixiodシステムでは、ログインスクリプトは通常、、、などのファイルから、およびなどのシェル固有のファイルで実行されます~/.profile。それら/etc/profileについては、シェルのマニュアルページで読むことができます(例:~/.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 &標準出力をログ ファイルにリダイレクトします。

関連情報