GNU/Linux >> Tutoriels Linux >  >> Linux

Shopt :introuvable [aucun fichier ou répertoire de ce type]

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
test1
Remarque :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
$


Linux
  1. Erreur :Tcl.h introuvable (aucun fichier ou répertoire de ce type) ?

  2. nano :commande introuvable

  3. tri :commande introuvable

  4. sed :commande introuvable

  5. Fichier 'readline/readline.h' introuvable

tune2fs :commande introuvable

fsck :commande introuvable

queue :commande introuvable

toucher :commande introuvable

fichier png.h introuvable - Linux

Le script SH dans $PATH est introuvable sur Linux Alpine 3.11