Viji
@Viji
DevOps Engineer

Как подгрузить environmental variable для нового пользователя?

Добрый всем,

никак не могу установить node для нового пользователя. Устанавливаю с помощью bash script от имени root

./bash_script.sh newusername

---------------------------------
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Incorrect number of arguments"
exit 1
fi

if [[ $(id -u) -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi

newuser=$1
useradd -m -s /bin/bash $newuser
usermod -aG sudo $newuser
sudo -H -u ${newuser} bash -c "curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35... | bash"
sudo -H -u ${newuser} bash -c "source /home/${newuser}/.bashrc"
sudo -H -u ${newuser} bash -c "nvm install 10.3"
-------------------------------------------
Error: nvm command not found
--------------------------------------------
Проблема в том, что nvm устанавливается нормально для пользователя newusername, но ее env variables (path to nvm в частности) добавляются в .bashrc, но не подгружаются хотя я уже выполнял source /home/${newuser}/.bashrc

Можно ли это все-таки сделать в одном скрипте?

с уважением, Вадим
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Viji
@Viji Автор вопроса
DevOps Engineer
Короче, пришлось конкретно извратиться, но может кому-то будет полезно (может кто объяснит, почему это вообще работает ))):

#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Incorrect number of arguments"
exit 1
fi

if [[ $(id -u) -ne 0 ]]; then
echo "This script must be run as root"
exit 1
fi

newuser=$1
useradd -m -s /bin/bash $newuser
usermod -aG sudo $newuser

read -r -d '' node_install << EOF
#!/bin/bash

cd /home/${newuser}/code
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35... | bash
source /home/${newuser}/.profile
source /home/${newuser}/.bashrc
nvm install 10.3
source /home/${newuser}/.profile
source /home/${newuser}/.bashrc
exit

EOF

echo -e "Node Install Script: \n""${node_install}"

echo "switching to the new user =""$newuser"
sudo -H -u ${newuser} bash -c "echo \"${node_install}\" > /home/$newuser/install_node.sh"
chmod +x /home/$newuser/install_node.sh
chown "${newuser}":"${newuser}" /home/$newuser/install_node.sh
sudo -i -H -u "${newuser}" exec $SHELL -i "/home/"${newuser}"/./install_node.sh"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@vitaly_il1
DevOps Consulting
sudo -H -u ${newuser} bash -c "source /home/${newuser}/.bashrc"
sudo -H -u ${newuser} bash -c "nvm install 10.3"


должно быть

sudo -H -u ${newuser} bash -c "source /home/${newuser}/.bashrc ; nvm install 10.3"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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