I know I once know how to do this but... how do you run a script (bash is OK) on login in unix?
-
The script ~/.bash_profile is run on login.
From William Keller -
Place it in your bash profile:
~/.bash_profile
From gbjbaanb -
If you are on OSX, then it's ~/.profile
William Keller : On OS X with bash, ~/.bash_profile works fine.Craig B. : Yes, but ~/.profile already exists.From Craig B. -
From wikipedia http://en.wikipedia.org/wiki/Bash
When Bash starts, it executes the commands in a variety of different scripts.
When Bash is invoked as an interactive login shell, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable.
When a login shell exits, Bash reads and executes commands from the file ~/.bash_logout, if it exists.
When an interactive shell that is not a login shell is started, Bash reads and executes commands from ~/.bashrc, if that file exists. This may be inhibited by using the --norc option. The --rcfile file option will force Bash to read and execute commands from file instead of ~/.bashrc.
From Svet -
When using Bash, the first of
~/.bash_profile,~/.bash_loginand~/.profilewill be run for an interactive login shell. I believe~/.profileis generally run by Unix shells besides Bash. Bash will run~/.bashrcfor a non-login interactive shell.I typically put everything I want to always set in
.bashrcand then run it from.bash_profile, where I also set up a few things that should run only when I'm logging in, such as setting upssh-agentor runningscreen.From Michael Johnson -
If you wish to run one script and only one script, you can make it that users default shell.
echo "/usr/bin/uptime" >> /etc/shells vim /etc/passwd * username:x:uid:grp:message:homedir:/usr/bin/uptimecan have interesting effects :) ( its not secure tho, so don't trust it too much. nothing like setting your default shell to be a script that wipes your drive. ... although, .. I can imagine a scenario where that could be amazingly useful )
From Kent Fredric -
Add an entry in
/etc/profilethat executes the script. This will be run during every log-on. If you are only doing this for your own account, use one of your login scripts (e.g..bash_profile) to run it. -
At login, most shells execute a login script, which you can use to execute your custom script. The login script the shell executes depends, of course, upon the shell:
- bash: .bash_profile, .bash_login, .profile (for backwards compabitibility)
- sh: .profile
- tcsh and csh: .login
- zsh: .zshrc
You can probably find out what shell you're using by doing
echo $SHELLfrom the prompt.
dr-jan : echo $0 should reveal which shell is being used, although occasionally I've seen 'sh' reported, when it's really 'ksh' - on HP-UX or Solaris I think.From pjz -
Search your local system's bash man page for ^INVOCATION for information on which file is going to be read at startup.
man bash /^INVOCATIONAlso in the FILES section,
~/.bash_profile The personal initialization file, executed for login shells ~/.bashrc The individual per-interactive-shell startup fileAdd your script to the proper file. Make sure the script is in the $PATH, or use the absolute path to the script file.
From jtimberman -
Launchd is a the prefered way in os X.
If you want it to run on your login put it in ~/Library/LaunchAgents
Start launchd item
launchctl load /Library/LaunchDaemons/com.bob.plist
Stop item
launchctl unload /Library/LaunchDaemons/com.bob.plist
Example com.bob.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>com.bob</string> <key>RunAtLoad</key> <true/> <key>ProgramArguments</key> <array> <string>/usr/bin/java</string> <string>-jar</string> <string>/Users/user/program.jar</string> </array> </dict> </plist>From Milhous
0 comments:
Post a Comment