Как выполнить файл как “~/.bashrc” для удара для пепла?

У меня есть плата с по умолчанию оболочкой тем, чтобы быть sh. В конце "/etc/profile" существует:

exec /bin/ash

Это изменяет оболочку на ash.

Что должно я делать, если хотят выполнить файл, где я определил некоторые псевдонимы в ash?

Я пытался использовать:

exec /bin/ash -f /root/aliases.sh

Но когда я вхожу в использование платы ssh это выходит из закрытого соединения высказывания.

Какой-либо другой путь?

0
задан 28 October 2015 в 15:56

1 ответ

Когда Вы работаете 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

Однако заметьте что:

  1. Выполнение exec /bin/ash в конце "~/.profile" заменит любую оболочку, получающую "~/.profile" (т.е. любую оболочку входа в систему) с ash экземпляр;
  2. Это не имеет никакого смысла. Корректный способ добраться ash поскольку оболочка входа в систему для пользователя должна изменить оболочку входа в систему для пользователя, который может быть сделан с помощью chsh.

Таким образом, я действительно предлагаю, чтобы Вы удалили exec /bin/ash от "~/.profile" и изменить оболочку входа в систему для пользователя, использующего chsh вместо этого.

1
ответ дан 28 July 2019 в 10:18

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

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