Le problème
Lorsqu'un utilisateur se connecte au terminal à l'aide d'un utilisateur avec le shell korn (ksh), les messages suivants s'affichent :
Shopt: Not Found [No Such File Or Directory]
La solution
La ligne suivante a été ajoutée sur /etc/profile :
shopt -s histappend
Remarque :
/etc/profil est un fichier de configuration qui définit l'environnement global pour tous les utilisateurs. Selon la page de manuel de 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
Le problème est avec KSH puisque shopt fait partie de BASH_BUILTINS . Selon le /etc/passwd fichier le shell utilisateur est "ksh" et non "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
Si nous passons en test utilisateur, nous trouverons les messages suivants :
# su - test1 /etc/profile[277]: shopt: not found [No such file or directory]
Solution 1
1. Modifiez le fichier /etc/profile et la ligne de commentaire 51 :shopt -s histappend :
# vi /etc/profile #shopt -s histappend
2. Rechargez le profil ou quittez le terminal et reconnectez-vous.
# source /etc/profile .
3. Reconnectez-vous :
# su - test1 $ $ whoami test1Remarque :Si vous devez utiliser cette ligne shopt -s histappend pour un utilisateur spécifique tel que root, il est conseillé d'utiliser cette option sur le bash_profile pour l'utilisateur root ou tout autre utilisateur utilisant bash par défaut.
Par exemple :
# cat /root/.bash_profile # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
Environnement spécifique à l'utilisateur et programmes de démarrage :
PATH=$PATH:$HOME/bin shopt -s histappend export PATH export HISTTIMEFORMAT="%
Supprimez-le de /etc/profile :
# cat /etc/profile| grep -i shopt #
Solution 2
Changez le Shell de ksh en bash pour l'utilisateur test1 .
1. Vérifiez votre Shell actuel :
# chsh -l test1 /bin/sh /bin/bash /sbin/nologin /bin/dash /bin/tcsh /bin/csh /bin/ksh
2. Changez-le en 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. Vérifiez et testez le nouveau shell :
# su - test1 $ whoami test1 $