Acid got a working solution for OSX Lion which disables the startup sound without affecting your sound volume after logging in again. This was posted as a comment at the official Apple Forum originally. Thanks to Acid for this!
1. Login as administrator and open a terminal window
2. Create scriptfile for muting
sudo nano /path/to/mute-on.sh
3. Enter this as content, when done press control+O to save and control+X to exit:
#!/bin/bash osascript -e 'set volume with output muted'
4. Create scriptfile for unmuting
sudo nano /path/to/mute-off.sh
5. Enter this as content, when done press control+O to save and control+X to exit:
#!/bin/bash osascript -e 'set volume without output muted'
6. Make both files executable:
sudo chmod u+x /path/to/mute-on.sh sudo chmod u+x /path/to/mute-off.sh
7. Check if any hooks already exist (these will be overwritten, so make sure it is OK for you)
sudo defaults read com.apple.loginwindow LoginHook sudo defaults read com.apple.loginwindow LogoutHook
8. Add hooks for muting
sudo defaults write com.apple.loginwindow LogoutHook /path/to/mute-on.sh sudo defaults write com.apple.loginwindow LoginHook /path/to/mute-off.sh
– /path/to/ is the location of the scripts, I used /Library/Scripts/
– you can skip the unmuting loginhook (i.e. each logout will silence your machine), but I like it this way because I always have sound available exactly at the volume level I set last time
– root has to be the owner of the script files – running an editor from command line with sudo is the easiest way to achieve that (otherwise you need to chown)
– to delete the hooks, use the following:
sudo defaults delete com.apple.loginwindow LoginHook
sudo defaults delete com.apple.loginwindow LogoutHook