У меня есть плата с по умолчанию оболочкой тем, чтобы быть sh
. В конце "/etc/profile" существует:
exec /bin/ash
Это изменяет оболочку на ash
.
Что должно я делать, если хотят выполнить файл, где я определил некоторые псевдонимы в ash
?
Я пытался использовать:
exec /bin/ash -f /root/aliases.sh
Но когда я вхожу в использование платы ssh
это выходит из закрытого соединения высказывания.
Какой-либо другой путь?
Когда Вы работаете exec /bin/ash -f /root/aliases.sh
ash
выполнения нев интерактивном режиме, и это выходит, как только "/root/aliases.sh" был выполнен; вот почему концы сессии SSH.
Таким образом, решение состоит в том, чтобы выполнить оболочку в интерактивном режиме; от man 1 ash
:
Если ENV переменной среды установлен на записи в оболочку или установлен в .profile оболочки входа в систему, оболочка затем читает команды из файла, названного в ENV. Поэтому пользователь должен поместить команды, которые должны быть выполнены только во время входа в систему в .profile файле и команды, которые выполняются для каждой оболочки в огибающем файле.
Поэтому просто набор ENV
в "~/.profile":
export ENV=/root/aliases.sh
и выполненный оболочка в интерактивном режиме:
exec /bin/ash
Однако заметьте что:
exec /bin/ash
в конце "~/.profile" заменит любую оболочку, получающую "~/.profile" (т.е. любую оболочку входа в систему) с ash
экземпляр;ash
поскольку оболочка входа в систему для пользователя должна изменить оболочку входа в систему для пользователя, который может быть сделан с помощью chsh
.Таким образом, я действительно предлагаю, чтобы Вы удалили exec /bin/ash
от "~/.profile" и изменить оболочку входа в систему для пользователя, использующего chsh
вместо этого.