




Сценарий ~/.bash_profile запускается при входе в систему.
Поместите его в свой профиль bash:
~/.bash_profile
Если у вас OSX, то это ~/.profile
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.
всего на десять лет позже, но: что, если для этой команды требуется sudo (например, установка общего сетевого ресурса с NAS в домашний каталог пользователя)
@ Mike'Pomax'Kamermans отличный вопрос, может быть, предполагается, что Судо находится в системных файлах?
может быть, а может и нет - надеюсь, кто-нибудь еще сможет ответить за нас = (
При использовании Bash первый из ~/.bash_profile, ~/.bash_login и ~/.profile будет запущен для интерактивной оболочки входа. Я считаю, что ~/.profile обычно запускается оболочками Unix, кроме Bash. Bash запустит ~/.bashrc для интерактивной оболочки без входа в систему.
Я обычно помещаю все, что хочу всегда, в .bashrc, а затем запускаю его из .bash_profile, где я также настраиваю несколько вещей, которые должны запускаться только при входе в систему, например, настройка ssh-agent или запуск screen.
Если вы хотите запустить сценарий один и один сценарий Только, вы можете сделать его оболочкой по умолчанию для пользователей.
echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd
* username:x:uid:grp:message:homedir:/usr/bin/uptime
может иметь интересные эффекты :) (это небезопасно, так что не доверяйте ему слишком сильно. Ничего подобного, чтобы настроить оболочку по умолчанию в качестве сценария, который стирает ваш диск. ... хотя ... я могу представить сценарий, где это может быть очень полезным)
Добавьте запись в /etc/profile, которая выполняет сценарий. Это будет выполняться при каждом входе в систему. Если вы делаете это только для своей учетной записи, используйте один из сценариев входа в систему (например, .bash_profile), чтобы запустить его.
При входе в систему большинство оболочек выполняют сценарий входа в систему, который вы можете использовать для выполнения своего пользовательского сценария. Сценарий входа в систему, выполняемый оболочкой, конечно же, зависит от оболочки:
Вероятно, вы сможете узнать, какую оболочку используете, выполнив
echo $SHELL
из подсказки.
Для немного более широкого определения «входа в систему» полезно знать, что в большинстве дистрибутивов при запуске X ваш .xsessionrc будет выполняться при запуске вашего X-сеанса.
echo $ 0 должен показать, какая оболочка используется, хотя иногда я видел сообщение «sh», когда на самом деле это «ksh» - думаю, на HP-UX или Solaris.
Найдите на странице руководства bash вашей локальной системы ^ INVOCATION, чтобы узнать, какой файл будет прочитан при запуске.
man bash
/^INVOCATION
Также в разделе ФАЙЛЫ
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
Добавьте свой сценарий в соответствующий файл. Убедитесь, что сценарий находится в $ PATH, или используйте абсолютный путь к файлу сценария.
Launchd является предпочтительным способом в OS X.
Если вы хотите, чтобы он запускался под вашим логином, поместите его в ~/Library/LaunchAgents
Запустить элемент launchd
launchctl load /Library/LaunchDaemons/com.bob.plist
Остановить элемент
launchctl unload /Library/LaunchDaemons/com.bob.plist
Пример 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>
Я был разочарован этой проблемой в течение нескольких дней. На убунту ничего не работало. Если я помещу вызов в / etc / profile, все произойдет сбой при попытке входа в систему. Я не мог использовать «Автозагрузку», потому что это было не то, что мне нужно. Это только устанавливает сценарий для этого текущего пользователя.
Наконец я нашел эту маленькую статью: http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
Решение было бы таким:
узнать путь к $ XDG_CONFIG_DIRS:
эхо $ XDG_CONFIG_DIRS
поместите свой скрипт в этот каталог
Какой логин? Вход в пользовательский интерфейс? как gnome, GTK, Unity? Возможно, новый вход в оболочку с tty? В чем разница между ними?