自分のコンピュータで自分のアカウントにログインしたときに、誰かが.shファイルを実行する手助けをしてくれるかどうか疑問に思います。私はMac OS X 10.6.7を実行しています。
コンピュータにログオンしたときに実行したいファイル "Example.sh"があります。すでにログインしていても問題はありませんが、自動的に実行します。
人々はそれをログインシェルファイルに追加しようと言っていますが、それがどこにあるかわかりません。いくつか助けてください。
これに従ってください:
Automator.app
を起動Application
を選択Show library
をクリックします(非表示の場合)Run Shell script
から)Actions/Utilities
を追加するどこかに保存してください(例えば、あなたのHOMEにApplications
フォルダを作ることができます、あなたはyour_name.app
を得るでしょう)
System Preferences
- > Accounts
- > Login items
に行きます。
編集:
最近、この回答に対して「良い回答」バッジを獲得しました。私の解決策は単純で実用的ですが、ログイン時に任意のプログラムまたはシェルスクリプトを実行する最もクリーンな方法は、次の場合を除いて @ trisweb's answer、で説明されています。 、あなたは双方向性が欲しい。
自動化ソリューションを使用すると、次のようなことができます。
スクリプトを実行するかアプリを終了するか、パスワードを入力するか、ログイン時に他のautomatorワークフローを実行するか、ログイン時に条件付きでアプリケーションを実行するかなどを要求します。
tl; dr:OSXのネイティブプロセスランチャとマネージャlaunchd
を使用します。
そうするために、launchctl
デーモンを作ります。スクリプトのあらゆる面を完全に制御できます。一度実行するか、デーモンとして生き続けることができます。ほとんどの場合、これが正しい方法です。
.plist
ファイルを作成してください。~/Library/LaunchAgents
に配置するlaunchctl 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>
Programキーの後の<string>
を希望のコマンドに置き換えます。
~/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が唯一の選択肢であると考えています。おそらくそれが存在する理由です。
シェルスクリプトを$ HOMEフォルダにlogin.sh
として作成します。
次の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