GNU/Linux >> Belajar Linux >  >> Linux

Shopt:Tidak Ditemukan [Tidak Ada File Atau Direktori]

Masalahnya

Saat pengguna masuk ke terminal menggunakan pengguna dengan korn shell (ksh), pesan berikut muncul:

Shopt: Not Found [No Such File Or Directory]

Solusinya

Baris berikut telah ditambahkan pada /etc/profile :

shopt -s histappend

Catatan :
/etc/profile adalah file konfigurasi yang mengatur lingkungan global untuk semua pengguna. Sesuai halaman manual 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

Masalahnya ada pada KSH karena shopt adalah bagian dari BASH_BUILTINS . Sesuai dengan /etc/passwd file shell pengguna adalah "ksh" dan bukan "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

Jika kita beralih ke pengujian pengguna, kita akan menemukan pesan berikut:

# su - test1
/etc/profile[277]: shopt: not found [No such file or directory]

Solusi 1

1. Edit file /etc/profile dan Comment line 51:shopt -s histappend:

# vi /etc/profile
#shopt -s histappend

2. Muat ulang profil atau keluar dari terminal dan login lagi.

# source /etc/profile .

3. Masuk Lagi:

# su - test1
$
$ whoami
test1
Catatan :Jika Anda perlu menggunakan baris ini shopt -s histappend untuk pengguna tertentu seperti root, disarankan untuk menggunakan opsi itu di bash_profile untuk pengguna root atau atau pengguna lain yang menggunakan bash sebagai default.

Misalnya :

# cat /root/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

Lingkungan khusus pengguna dan program startup:

PATH=$PATH:$HOME/bin
shopt -s histappend
export PATH
export HISTTIMEFORMAT="%

Hapus dari /etc/profile:

# cat /etc/profile| grep -i shopt
#

Solusi 2

Ubah Shell dari ksh menjadi bash untuk pengujian pengguna1 .

1. Verifikasi Shell Anda saat ini:

# chsh -l test1
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
/bin/ksh

2. Ubah ke 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. Verifikasi dan uji shell baru:

# su - test1
$ whoami
test1
$


Linux
  1. Kesalahan:Tcl.h Tidak Ditemukan (tidak ada File Atau Direktori Tersebut)?

  2. mkfs.hfsplus:perintah tidak ditemukan

  3. dos2unix:perintah tidak ditemukan

  1. chmod:perintah tidak ditemukan

  2. id:perintah tidak ditemukan

  3. w:perintah tidak ditemukan

  1. mkfs:perintah tidak ditemukan

  2. df:perintah tidak ditemukan

  3. file:perintah tidak ditemukan