Linux Mint .profile TERM-Variable nicht festgelegt

Linux Mint .profile TERM-Variable nicht festgelegt

Ich habe ein benutzerdefiniertes Skript in meiner .profile-Datei, mit hinzugefügtem Code und ohne dass etwas weggenommen wurde, aber es antwortet trotzdem mit einem TERM ENVIRONMENT VARIABLE NOT SETFehler. Wenn ich den Befehl jedoch echo $TERMnach dem Booten im Terminal ausführe, wird er auf gesetzt xterm-256color. Ich bin sogar bereit, den Fehler zu unterdrücken, anstatt ihn zu beheben, da er meinen Computer nach dem Booten nicht beeinträchtigt.

Hier ist das Skript in .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 "\033[1;32mStatus for play.wildcraftmc.com [Wildcraft Survival+ Server]   \033[0m" 
    mcstatus play.wildcraftmc.com status >wildcraft.txt
    sed -n 1p wildcraft.txt
    tail -n -1 wildcraft.txt
    echo ==========================================================================================================================================
    echo -e "\033[1;32mStatus For Mc.Starlegacy.Net [Starlegacy Space Survival]   \033[0m" 
    mcstatus mc.starlegacy.net status >Star-Legacy.txt
    sed -n 1p Star-Legacy.txt
    tail -n -1 Star-Legacy.txt
    echo ==========================================================================================================================================
    echo -e "\033[1;32mStatus For Jectile.com [Shoota COD Server]   \033[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 "\033[0;33mskipping GUI. The following service(s) will not run: onedrive-d, lightdm, Minecraft-Lukaka, xinput 11.\033[0m"
    fi

Dies ist die Fehlermeldung:irren\

Zum Kontext: Mein Skript prüft, ob eine Internetverbindung besteht. Wenn ja, ruft es wttr.in (Wetter) ab und verwendet ein offizielles Minecraft-Tool, um den Status auf einigen Servern zu prüfen.

Antwort1

Wenn Ihr Skript also an dem Punkt angelangt ist, an dem es Sie fragt, ob Sie die GUI starten möchten, und Sie mit „Ja“ antworten, werden drei weitere Befehle ausgeführt:

sudo systemctl start lightdm

onedrive-d start

xinput set-prop 11 317 -1

Wenn Sie nun wissen, dass die Fehler harmlos sind, können Sie sie in Nothingless umleiten, indem Sie 2>/dev/nullnach dem Befehl, der den Fehler verursacht, Folgendes verwenden, z. B.

sudo systemctl start lightdm 2>/dev/null

Es ist jedoch ratsamer, jeden dieser Befehle nacheinander auszuführen, die angezeigten Fehler zu überprüfen und sie nach Möglichkeit zu beheben.

Antwort2

Bevor Sie Nachrichten drucken oder Befehle ausführen, die ein Terminal erfordern, sollten Sie prüfen, ob Sie in einem Terminal arbeiten. Dies kann beispielsweise mit folgendem Befehl erfolgen:

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

Die GUI-Anmeldeprozessquellen /etc/profileund ~/.profiledamit alle Umgebungsvariablen, die Sie möglicherweise benötigen, werden festgelegt. Diese Quellen werden jedoch nicht in einem Terminal verwendet und TERMsind daher nicht festgelegt. Wenn Sie ein Terminal öffnen und ausführen echo $TERM, hat das Terminal TERMdie von ihm gestarteten Prozesse festgelegt, sodass Sie einen Wert erhalten.

Meiner Meinung nach sollten Sie alles, was Sie hinzugefügt haben, in die ifoben angegebene Prüfung einschließen, da nichts davon bei der Ausführung in einer GUI besonders relevant ist.

verwandte Informationen