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 test1Catatan :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 $