Variável de TERM do Linux Mint .profile não definida

0

Eu tenho um script personalizado no meu arquivo .profile, com código adicionado e nada removido, mas ainda está respondendo com um erro TERM ENVIRONMENT VARIABLE NOT SET . No entanto, se eu executar o comando echo $TERM no terminal após a inicialização, ele será definido como xterm-256color . Estou aberto para até mesmo suprimir o erro, em vez de resolvê-lo, pois ele não afeta meu computador após a inicialização.

Aqui está o script em .profile:

clear
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"
fi


# --- EVERYTHING ABOVE HERE IS DEFAULT AND NOT CHANGED ---


wget -q --spider http://google.com
if [ $? -eq 0 ]; then
    (
     echo )
    else
    (
    echo Aquiring Internet Connection . . .
    sleep 6)
    fi
wget -q --spider http://google.com
if [ $? -eq 0 ]; then
    (
     echo )
    else
    (
    sleep 5)
    fi

wget -q --spider http://google.com
if [ $? -eq 0 ]; then
    echo ==========================================================================================================================================
    echo WELCOME LUKAKA                                     LOCAL WEATHER REPORT    VIA WTTR.IN                                      Running XFCE
    echo ==========================================================================================================================================
    curl wttr.in
    echo ==========================================================================================================================================
    echo
    echo -e "3[1;32mStatus for play.wildcraftmc.com [Wildcraft Survival+ Server]   3[0m" 
    mcstatus play.wildcraftmc.com status >wildcraft.txt
    sed -n 1p wildcraft.txt
    tail -n -1 wildcraft.txt
    echo ==========================================================================================================================================
    echo -e "3[1;32mStatus For Mc.Starlegacy.Net [Starlegacy Space Survival]   3[0m" 
    mcstatus mc.starlegacy.net status >Star-Legacy.txt
    sed -n 1p Star-Legacy.txt
    tail -n -1 Star-Legacy.txt
    echo ==========================================================================================================================================
    echo -e "3[1;32mStatus For Jectile.com [Shoota COD Server]   3[0m" 
    mcstatus Jectile.com status >Star-Legacy.txt
    sed -n 1p Star-Legacy.txt
    tail -n -1 Star-Legacy.txt
    echo ==========================================================================================================================================
    rm Star-Legacy.txt
    rm wildcraft.txt
else
    echo Connection Failed.
fi

echo -n "Would you like to start the GUI (y/n)? "
old_stty_cfg=$(stty -g)
stty raw -echo ; answer=$(head -c 1) ; stty $old_stty_cfg # Careful playing with stty
if echo "$answer" | grep -iq "^y" ;then
    sudo systemctl start lightdm
    onedrive-d start
    xinput set-prop 11 317 -1
else
    echo No
    echo -e "3[0;33mskipping GUI. The following service(s) will not run: onedrive-d, lightdm, Minecraft-Lukaka, xinput 11.3[0m"
    fi

Esta é a mensagem de erro: \

Para o contexto, o que meu script faz é verificar se há uma conexão com a Internet, se estiver lá, wttr.in (weather) e usa uma ferramenta oficial do Minecraft para verificar o status em alguns servidores.

    
por Mark Deven 09.08.2018 / 16:32

2 respostas

1

Então, quando seu script chegar ao ponto em que ele pergunta se você deseja iniciar a GUI, se você disser yes, ele executará mais três comandos:

sudo systemctl start lightdm

onedrive-d start

xinput set-prop 11 317 -1

Agora, se você sabe que os erros são inofensivos, é possível redirecioná-los para o nada, usando 2>/dev/null após o comando causar o erro, como

sudo systemctl start lightdm 2>/dev/null

No entanto, seria mais aconselhável executar cada um desses comandos, revise os erros mostrados e corrija-os, se possível.

    
por 09.08.2018 / 16:45
1

Você deve verificar se está executando em um terminal antes de imprimir mensagens ou executar comandos que exijam um terminal. Isso pode ser feito, por exemplo, usando:

if [ -t 1 ] # check if stdout is a terminal
then
  # in a TTY, do stuff
fi

As fontes do processo de login da GUI /etc/profile e ~/.profile , para que quaisquer variáveis de ambiente necessárias possam ser definidas. Mas esse sourcing não é feito em um terminal, então TERM não está definido. Quando você abre um terminal e executa echo $TERM , o terminal definiu TERM para processos iniciados por ele, então você obtém um valor.

IMO você deve envolver tudo o que você adicionou na verificação if dada acima, já que nada disso é particularmente relevante quando executado em uma GUI.

    
por 19.08.2018 / 07:10