Я не делал этого в течение некоторого времени, но один из способов - использовать checkinstall
, который создаст пакет для вашей системы. После этого вы можете удалить пакет.
Псевдонимы не раскрываются, когда оболочка не интерактивна, если только опция оболочки expand_aliases
не установлена с помощью shopt -s expand_aliases
.
Псевдонимы — это инструмент быстрого доступа для интерактивного использования. Вместо этого для любого сценария используйте функцию оболочки :
.startservices () {
# commands go here
}
Функции оболочки во многих отношениях более гибкие, чем псевдонимы.Они могут принимать аргументы, как это делает сценарий оболочки, для начала :
.startservices () {
user="$1"
service="$2"
# code to start service "$service" as user "$user"
}
Вам не нужно явно указывать источник .bash_profile
другого пользователя. Вместо этого используйте sudo -i
. Это запустит оболочку входа в систему, которая будет читать .bash_profile
при запуске :
$ sudo -i -u User2 startservices
Для этого требуется, чтобы startservices
был сценарием или другой внешней утилитой в $PATH
из User2
, функцией оболочки, определенной в файлах запуска оболочки User2
, или псевдонимом (с оболочкой. работает с набором expand_aliases
), определенным в файлах запуска оболочки User2
.
Псевдоним определен в профиле _.bash пользователя user1. Когда вы используете «su -l user2», он фактически очищает все переменные среды для пользователя1 и вместо этого загружает переменные пользователя2, где псевдоним «startservices» не определен.
Вы можете использовать опцию "su -p ", которая сохранит текущую среду,но в этом случае user2 должен иметь разрешение на чтение файла.bashrc user1.