Запуск скрипта при входе в систему с помощью ~ / .bash_login

Мне нужно запустить скрипт, когда я вхожу в систему и выхожу из системы в своем Ubuntu.

Я попытался поместить скрипт в свой ~/.bash_login, но он не сработал.

Есть ли лучшее место, где я могу запустить мой скрипт?

Мой скрипт находится в /home/gsd/script/login.sh, и он является исполняемым.

edit:

мой скрипт запускается когда я набираю: /home/gsd/script/login.sh, и теперь он установлен с + x

, у меня есть только: touch /home/gsd/test.txt в ~/.bash_login.

файл test.txt никогда не создавался

edit 2:

gsd@laptop:~$ ll ~/.bash*
-rw------- 1 gsd gsd 38639 2012-01-25 17:25 .bash_history
-rw-r--r-- 1 gsd gsd    29 2012-01-25 15:22 .bash_login
-rw-r--r-- 1 gsd gsd   220 2011-11-03 19:22 .bash_logout
-rw-r--r-- 1 gsd gsd  3136 2011-11-04 08:00 .bashrc
13
задан 26 January 2012 в 19:15

2 ответа

Убедитесь, что скрипт, который вы хотите запустить, является исполняемым. Для этого запустите chmod +x scriptname. Также убедитесь, что скрипт начинается с правильного shebang (#!/bin/bash для сценариев оболочки). Наконец, используйте все полные пути при выполнении этого, например, /usr/bin/echo вместо echo, просто отключите среду, в которой будет выполняться ваш скрипт, не идентична той, к которой вы привыкли.

0
ответ дан 25 July 2018 в 20:06

Локальные оболочки, независимо от того, являются ли они интерактивными или неинтерактивными, читают и исполняют .profile

Интерактивные оболочки читают и исполняют .bashrc.

Часто вы увидите что /etc/profile sources .bashrc - таким образом, все настройки, сделанные в .bashrc, также вступят в силу в оболочке входа, независимо от того, является ли она интерактивной или неинтерактивной.

Порядок выполнения инициализации скрипты для оболочки зависят от того, является ли оболочка интерактивной или неинтерактивной и не связана с ней, если она является сценарием входа в систему или нет.

Когда bash вызывается как интерактивная оболочка входа, он считывает и выполняет команды из /etc/profile. Затем Bash попытается выполнить ТОЛЬКО первый файл существует и читается следующим образом:

  1. .bash_profile
  2. .bash_login
  3. .profile

Если один из этих файлов найден, но не может быть прочитан, это вызовет ошибку. Нет ошибки, если они НЕ найдены.

Этот же процесс выполняется, когда неинтерактивная оболочка входа вызывается с опцией --login.

4
ответ дан 15 August 2018 в 20:20

Другие вопросы по тегам:

Похожие вопросы: