Реклама

 
0 голосов
 
755 просмотров
10.09.2016 / 13:37  aNNiMON

Алиас на переключение пользователя, выполнение команды и продолжение работы в баше с этим пользователем

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

Мне же нужно по алиасу переключить пользователя, сменить директорию и остаться этим пользователем.

Что я ожидаю:
root@vps:~# su - user
user@vps:~$ cd www
user@vps:~/www$

Теперь я нахожусь под пользователем user в папке www.

Чтобы не писать две команды, я хочу объединить их в один алиас:
root@vps:~# magicalias
user@vps:~/www$

Помогите мне это сделать.
Изм. aNNiMON от 10.09.2016 / 13:37
Ответы
 
1 голос
 
# 10.09.2016 / 16:09  kalterfx
  1. # $1: user
  2. # $2: path
  3. # $3...: extra arguments
  4. function switchuserpath()
  5. {
  6.     local DESTINATION_PATH="$2"
  7.  
  8.     local SU_COMMAND_LINE="cd \"$DESTINATION_PATH\" && exec \"\$SHELL\"" \
  9.           EXTRA_ARGUMENTS=("${@:3}") \
  10.           USER="$1"
  11.  
  12.     su -c "$SU_COMMAND_LINE" "${EXTRA_ARGUMENTS[@]}" - "$USER"
  13. }

// PS: У меня для su - не надо делать лишний переход в $HOME. Не знаю почему у меня так (или у вас не так).
Изм. aNNiMON от 10.09.2016 / 19:52
 
0 голосов
 
# 12.09.2016 / 15:26  Koenig
а нельзя объеденить как в консоли? через &&
Изм. Koenig от 12.09.2016 / 15:30
 
0 голосов
 
# 10.09.2016 / 15:09  Naik
  1. echo 'alias checkoutuser \'su - $1; cd $HOME; \'' >> ~/.bashrc

Использование
  1. checkoutuser annimon

Не тестит, но думаю идея понятна :gg:
Всего: 3

Мы в соцсетях

vk tw tg yt

Пожертвования

Аноним2850 р.
Freddy1700 р.
riseremi1611 р.
NaruTrey800 р.
vlavolk637 р.