Das Problem
Wenn sich ein Benutzer mit einem Benutzer mit der Korn-Shell (ksh) am Terminal anmeldet, erscheinen die folgenden Meldungen:
Shopt: Not Found [No Such File Or Directory]
Die Lösung
Die folgende Zeile wurde zu /etc/profile hinzugefügt :
shopt -s histappend
Hinweis :
/etc/profile ist eine Konfigurationsdatei, die die globale Umgebung für alle Benutzer festlegt. Laut Manpage von shopt:
# man shopt shopt is part of BASH_BUILTINS -s Display readline key sequences bound to macros and the strings they output in such a way that they can be re-read. histappend If set, the history list is appended to the file named by the value of the HISTFILE variable when the shell exits, rather than overwriting the file
Das Problem liegt bei KSH, da shopt Teil von BASH_BUILTINS ist . Gemäß /etc/passwd Datei ist die Benutzer-Shell „ksh“ und nicht „bash“:
# grep -i test /etc/passwd testuserX:x:54322:54323::/home/testuserX:/bin/bash test1:x:54323:112::/home/test1:/bin/ksh
==============
/etc/profile :
==============
47 TMOUT=14400 48 HOSTNAME=`/bin/hostname 2>/dev/null` 49 HISTSIZE=1000 50 HISTTIMEFORMAT='%F.%T ' 51 shopt -s histappend <=============================== Line was added
Wenn wir zum Benutzertest wechseln, finden wir die folgenden Meldungen:
# su - test1 /etc/profile[277]: shopt: not found [No such file or directory]
Lösung 1
1. Bearbeiten Sie die Datei /etc/profile und die Kommentarzeile 51:shopt -s histappend:
# vi /etc/profile #shopt -s histappend
2. Laden Sie das Profil neu oder beenden Sie das Terminal und melden Sie sich erneut an.
# source /etc/profile .
3. Erneut anmelden:
# su - test1 $ $ whoami test1Hinweis :Wenn Sie diese Zeile shopt -s histappend für einen bestimmten Benutzer wie root verwenden müssen, wird empfohlen, diese Option auf dem bash_profile für den Root-Benutzer oder jeden anderen Benutzer, der Bash als Standard verwendet, zu verwenden.
Zum Beispiel:
# cat /root/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
Benutzerspezifische Umgebung und Startprogramme:
PATH=$PATH:$HOME/bin shopt -s histappend export PATH export HISTTIMEFORMAT="%
Entfernen Sie es aus /etc/profile:
# cat /etc/profile| grep -i shopt #
Lösung 2
Ändern Sie die Shell von ksh in bash für Benutzer test1 .
1. Überprüfen Sie Ihre aktuelle Shell:
# chsh -l test1 /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh /bin/ksh
2. Ändern Sie es in bash
# chsh -s /bin/bash test1 Changing shell for test1. Shell changed.
# cat /etc/passwd|grep -i test1 test1:x:54323:112::/home/test1:/bin/bash #
3. Überprüfen und testen Sie die neue Shell:
# su - test1 $ whoami test1 $