Вопрос или проблема
Я в данный момент пытаюсь выполнить скрипт на CentOS. Он должен запускаться каждый раз при открытии терминала любым пользователем. Я пытался поместить скрипт в /etc/profile.d
и редактировать ~/.bashrc
. Это не сработало должным образом. Скрипт исполняется только для этого конкретного пользователя (в моем случае root), а не для всех пользователей. Что я делаю не так?
Добавьте ваш скрипт или команду в конец:
/etc/profile
Это сделает так, что он будет выполняться для всех пользователей при открытии сессии.
Вы упомянули, что хотите выполнять новую команду при открытии терминала.
Следуйте этому шагу:
В терминале выберите Правка > Настройки > Заголовок вкладки и команда > Выполнить пользовательскую команду моего шелла.
Или
gnome-terminal –tab -e “ваша команда” для открытия новой вкладки.
Это заставит ваше приложение запускаться, когда любой пользователь открывает терминал.
Вам нужно поместить их в конец вашего профиля etc. Вот как выглядит общий /etc/profile:
# /etc/profile: системный .profile файл для Bourne shell (sh(1))
# и совместимых с Bourne оболочек (bash(1), ksh(1), ash(1), ...).
if [ "$(id -u)" -eq 0 ]; then
PATH="ROOTPATH"
else
PATH="USERPATH"
fi
export PATH
if [ "${PS1-}" ]; then
if [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then
# Файл bash.bashrc уже устанавливает значение по умолчанию для PS1.
# PS1='\h:\w\$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ "$(id -u)" -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# НИЖЕУПОМЯНУТЫЙ СКРИПТ ЗАГРУЗИТ ВАШИ ПОЛЬЗОВАТЕЛЬСКИЕ ФАЙЛЫ
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
Ответ или решение
Чтобы выполнить скрипт при каждом запуске терминала на CentOS для всех пользователей, необходимо учитывать несколько важных моментов. Начнем с анализа текущего подхода и предложим решение.
Изучение проблемы
Вы уже пробовали следующие методы:
-
Размещение скрипта в
/etc/profile.d
:- Этот метод позволяет загружать скрипты для всех пользователей. Однако, если скрипт не выполнен, это может быть связано с отсутствием прав или неправильной конфигурацией скрипта.
-
Редактирование
~/.bashrc
:- Этот файл применяется только для конкретного пользователя, что объясняет, почему скрипт работает только для пользователя root.
Решение
Чтобы ваш скрипт срабатывал при открытии терминала любым пользователем, рекомендуется следовать следующей последовательности действий:
-
Размещение скрипта в каталоге
/etc/profile.d
:- Убедитесь, что ваш скрипт имеет правильные разрешения на выполнение. Используйте команду:
chmod +x /etc/profile.d/ваш_скрипт.sh
- Если ваш скрипт требует специфических переменных окружения, убедитесь, что они установлены в самом скрипте перед его выполнением.
- Убедитесь, что ваш скрипт имеет правильные разрешения на выполнение. Используйте команду:
-
Редактирование файла
/etc/profile
:- Вы можете добавить вызов вашего скрипта напрямую в этот файл, что обеспечит его выполнение для всех пользователей при входе в систему. Например, добавьте в конец файла
/etc/profile
строку:. /path/to/your_script.sh
- Вы можете добавить вызов вашего скрипта напрямую в этот файл, что обеспечит его выполнение для всех пользователей при входе в систему. Например, добавьте в конец файла
Альтернативные настройки терминала
Если ваша цель — запускать комманду при открытии конкретного терминала (например, Gnome Terminal), это можно сделать через настройки интерфейса:
-
Настройки Gnome Terminal:
- Откройте Gnome Terminal, выберите "Edit" -> "Preferences", затем вкладка "Tab Title and Command" и активируйте опцию "Run a custom command instead of my shell". Введите вашу команду. Это позволит запускать вашу команду каждый раз, когда открывается новый терминал.
-
Запуск через командную строку:
- Также можно использовать параметр командной строки для открытия нового таба с вашей командой:
gnome-terminal --tab -e "ваша_команда"
- Также можно использовать параметр командной строки для открытия нового таба с вашей командой:
Примеры и вывод
Вот как может выглядеть стандартный файл /etc/profile
, с добавленным вызовом вашего скрипта:
# /etc/profile: system-wide .profile file for the Bourne shell (sh) and Bourne compatible shells.
...
# Добавление пользовательского скрипта
. /etc/profile.d/ваш_скрипт.sh
Заключение
Следуя приведенным рекомендациям, вы сможете добиться запуска вашего скрипта для всех пользователей при каждом открытии терминала на CentOS. Убедитесь, что скрипт корректен, выполнен и имеет права на выполнение, чтобы избежать проблем в будущем.