私のコンピューターのアカウントにログインしたときに、誰かが.shファイルの実行を手伝ってくれるかどうか疑問に思っています。Mac OS X 10.6.7を実行しています。
コンピューターにログオンしたときに実行する "Example.sh"ファイルがあります。すでにログインしている場合は問題なく実行できますが、これを自動的に実行したいのですが。
ログインシェルファイルに追加するように言われていますが、どこにあるかわかりません。助けてください。
私のコンピューターのアカウントにログインしたときに、誰かが.shファイルの実行を手伝ってくれるかどうか疑問に思っています。Mac OS X 10.6.7を実行しています。
コンピューターにログオンしたときに実行する "Example.sh"ファイルがあります。すでにログインしている場合は問題なく実行できますが、これを自動的に実行したいのですが。
ログインシェルファイルに追加するように言われていますが、どこにあるかわかりません。助けてください。
回答:
これに従ってください:
Automator.appApplicationShow libraryツールバーをクリックします(非表示の場合)。Run shell script(からActions/Utilities)(あなたが作ることができ、たとえばどこかに保存しApplications、あなたのホームフォルダを、あなたが取得しますyour_name.app)
に行くSystem Preferences-> Accounts->Login items
編集:
私は最近、この回答に対して「グッドアンサー」バッジを獲得しました。私のソリューションはシンプルで機能しますが、対話時に必要でない限り、ログイン時にプログラムまたはシェルスクリプトを実行する最もクリーンな方法は@triswebの回答に記載されています。
オートマトンソリューションを使用すると、次のようなことができます。

したがって、スクリプトを実行するか、アプリを終了するか、パスワードを要求するか、ログイン時に他のオートマトンワークフローを実行するか、ログイン時にアプリケーションを条件付きで実行するかなどです。
tl; dr:OSXのネイティブプロセスランチャーおよびマネージャーを使用しlaunchdます。
そのためには、launchctlデーモンを作成します。スクリプトのすべての側面を完全に制御できます。一度実行するか、デーモンとして存続させることができます。ほとんどの場合、これが方法です。
.plistに従ってファイルを作成してください。~/Library/LaunchAgentslaunchctl load [filename.plist])詳細についてlaunchdは、ウィキペディアの記事は非常に優れており、システムと、他の古いシステムに対するその利点について説明しています。
次に、ログイン時にスクリプトを実行するための特定のplistファイルを示します。
OSX El Capitan以降の2017/09/25更新(JoséMessias Jrへのクレジット):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/path/to/executable/script.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>
<string>プログラムキーの後ろを目的のコマンドに置き換えます(そのコマンドで参照されるスクリプトchmod a+x /path/to/executable/script.shはすべて、実行可能でなければならないことに注意してください。すべてのユーザーを対象とするためです)。
名前を付けて保存 ~/Library/LaunchAgents/com.user.loginscript.plist
実行launchctl load ~/Library/LaunchAgents/com.user.loginscript.plistしてログアウト/ログインし、テストする(または直接テストする場合はを実行するlaunchctl start com.user.loginscript)
テール/var/log/system.logエラーメッセージの。
重要なのは、これがユーザー固有のlaunchdエントリであるため、指定されたユーザーのログイン時に実行されることです。システム固有の起動デーモン(に配置/Library/LaunchDaemons)は、ブート時に実行されます。
すべてのユーザーのログイン時にスクリプトを実行したい場合は、LoginHookが唯一のオプションであると思います。それがおそらくその理由です。
launchctl、ほとんどの場合、はるかに優れており、スクリプトの実行に関するあらゆる側面をより詳細に制御できます。それは、「launchdが存在するときに、なぜ能力の低いメソッドを使用するのか」という意味です。(私が最初の文を変更して、私がこの状況でこれらを個人的に推奨しないことを示すことに注意してください)。
                    login.sh$ HOMEフォルダーにシェルスクリプトを作成します。
次の1行のスクリプトをスクリプトエディターに貼り付けます。
シェルスクリプト「$ HOME / login.sh」を実行
次に、それをアプリケーションとして保存します。
最後に、アプリケーションをログイン項目に追加します。
スクリプト出力を視覚的にしたい場合は、ステップ2をこれと入れ替えることができます。
tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell
複数のコマンドが必要な場合は、次のようなものを使用できます。
tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell
Go to System Preferences -> Accounts -> Login items、このアプリケーションの非表示ボックスをチェックします。
                    ~/Library/LaunchAgentsフォルダを確認しましたか?