Ola galera beleza? estou criando um comando que irá aterar deserminada linha do arquivo /etc/profile apartir de um script porem em determinadas versões do linux o comando sudo pode nao estar ativado entao seria preciso utilizar o comando su para isso dentro do script ao executar:
dentro do arquivo /etc/profile tem a seguinte linha:
if [ "`id -u`" = "0" ]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi
Entao fiz isso:
$ PROFILE="/etc/profile"
$ sed '/\"`id -u`\"/ s/^if/# if/g;/\"`id -u`\"/ s/$/\nif [[ \"\$(id -u)\" == \"0\" || \"\$(id -un)\" == \"\${HOME##*\/}\" ]]; then/g;' ${PROFILE}
# if [ "`id -u`" = "0" ]; then
if [[ "$(id -u)" == "0" || "$(id -un)" == "${HOME##*/}" ]]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi
O comando mostrou executar corretamente para alterar o arquivo mas ao fazer isso utilizando o comando "su -c":
$ PROFILE="/etc/profile"
$ su -c "sed '/\"`id -u`\"/ s/^if/# if/g;/\"`id -u`\"/ s/$/\nif [[ \"\$(id -u)\" == \"0\" || \"\$(id -un)\" == \"\${HOME##*\/}\" ]]; then/g;' ${PROFILE}"
if [ "`id -u`" = "0" ]; then
echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
if [ ! $? = 0 ]; then
PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
fi
fi
Ele pede a senha faz a leitura do arquivo na variavel $PROFILE mas nao modifica a linha qual o problema no comando "su -c"?