GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Shopt:Nicht gefunden [Keine solche Datei oder Verzeichnis]

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


Linux
  1. Fehler:Tcl.h nicht gefunden (keine solche Datei oder Verzeichnis)?

  2. nano:Befehl nicht gefunden

  3. Sortieren:Befehl nicht gefunden

  4. sed:Befehl nicht gefunden

  5. png.h-Datei nicht gefunden - Linux

tune2fs:Befehl nicht gefunden

fsck:Befehl nicht gefunden

tail:Befehl nicht gefunden

touch:Befehl nicht gefunden

Datei „readline/readline.h“ nicht gefunden

Das SH-Skript in $PATH wird unter Linux Alpine 3.11 nicht gefunden