Я знаю, что когда-то знаю, как это сделать, но... как вы запускаете script (bash ОК) при входе в unix?
Как вы запускаете script при входе в систему * nix?
Ответ 1
Когда запускается Bash, он выполняет команды в разных скрипты.
Когда Bash вызывается как интерактивный login, он сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в этом порядке и читает и выполняет команды с первого тот, который существует и доступен для чтения.
Когда оболочка входа завершается, Bash читает и выполняет команды из файла ~/.bash_logout, если он существует.
Когда интерактивная оболочка, которая не является запускается оболочка входа, Bash читает и выполняет команды из ~/.bashrc, если этот файл существует. Это может быть с помощью опции --norc. Параметр файла -rcfile принудительно Bash для чтения и выполнения команд из вместо ~/.bashrc.
Ответ 2
При входе в систему большинство оболочек выполняет сценарий входа в систему, который можно использовать для выполнения собственного сценария. Сценарий входа в систему, выполняемый оболочкой, зависит, конечно, от оболочки:
- bash:.bash_profile,.bash_login,.profile (для обратной совместимости)
- sh:.profile
- tcsh и csh:.login
- zsh:.zshrc
Вы можете, вероятно, узнать, какую оболочку вы используете, выполнив
echo $SHELL
из подсказки.
Для более широкого определения 'login' полезно знать, что в большинстве дистрибутивов, когда X запускается, ваш .xsessionrc будет выполняться при запуске X-сессии.
Ответ 3
При использовании Bash первая из ~/.bash_profile
, ~/.bash_login
и ~/.profile
будет запущена для интерактивной оболочки входа. Я считаю, что ~/.profile
обычно запускается оболочками Unix, кроме Bash. Bash будет запускать ~/.bashrc
для интерактивной оболочки без входа.
Я обычно помещаю все, что я хочу всегда устанавливать в .bashrc
, а затем запускаю его из .bash_profile
, где я также создаю несколько вещей, которые должны запускаться только при входе в систему, например, настройка ssh-agent
или запустить screen
.
Ответ 4
Если вы хотите запустить один script и только один script, вы можете сделать это, как полагают, по умолчанию.
echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd
* username:x:uid:grp:message:homedir:/usr/bin/uptime
может иметь интересные эффекты:) (его небезопасно, поэтому не доверяйте ему слишком много. Не похоже на то, что ваша оболочка по умолчанию должна быть script, которая стирает ваш диск... хотя, я могу представьте себе сценарий, где это может быть удивительно полезно)
Ответ 5
Поместите его в свой bash профиль:
~/.bash_profile
Ответ 6
Если вы находитесь на OSX, то он ~/.profile
Ответ 7
Launchd
является предпочтительным способом в OS X.
Если вы хотите, чтобы он запускался в вашем логине, поместите его в ~/Library/LaunchAgents
Начать Launchd
item
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>
Ответ 8
Я был разочарован этой проблемой в течение нескольких дней. На ubuntu ничего не работало. Если я поместил вызов в /etc/profile, он все разбился при попытке входа в систему. Я не мог использовать "Приложения для запуска", поскольку это было не то, что я хотел. Это устанавливает только script для этого текущего пользователя.
Наконец, я нашел эту маленькую статью: http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
Решение:
-
узнать путь $XDG_CONFIG_DIRS:
echo $XDG_CONFIG_DIRS
-
поместите ваш script в этот каталог
Ответ 9
Добавьте запись в /etc/profile
, которая выполняет script. Это будет выполняться во время каждого входа в систему. Если вы делаете это только для своей учетной записи, используйте один из своих сценариев входа (например, .bash_profile
) для его запуска.
Ответ 10
Найдите свою локальную систему bash справочную страницу для ^ INVOCATION для получения информации о том, какой файл будет считаться при запуске.
man bash
/^INVOCATION
Также в разделе FILES
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
Добавьте свой script в нужный файл. Убедитесь, что script находится в $PATH или использует абсолютный путь к файлу script.
Ответ 11
script ~/.bash_profile
запускается при входе в систему.