作者 阿九【轉載時請務必以超鏈接形式標明文章原始出處和作者信息】
解決Linux上sqlplus中的backspace鍵及上下翻命令問題
一、解決Backspace刪除功能。
在oracle的.bash_profile文件中添加如下內容
stty erase ^h |
二、解決上下翻命令問題。
解決上下翻問題需要安裝一個工具。
uniread
下載地址:
http://sourceforge.net/projects/uniread/
再安裝uniread 前,還需要安裝其他4個工具。分別是perl、readline、Term、IO-Tty
在系統關盤中,找到 perl-5.8.8-27.el5.i386.rpm 和 readline-5.1-3.el5.i386.rpm 兩個包進行安裝。
如果系統光盤中沒有readline,可以在這裏下載
GNU readline
http://cnswww.cns.cwru.edu/php/chet/readline/rltop.html
Term::ReadLine::Gnu
http://search.cpan.org/dist/Term-ReadLine-Gnu/
IO::Tty
http://search.cpan.org/dist/IO-Tty/
下載好後,先解壓
tar -xvzf Term-ReadLine-Gnu-1.20.tar.gz
tar -xvzf IO-Tty-1.10.tar.gz
進入各自目錄,分別執行
perl Makefile.PL
make
make install
來進行安裝。
在安裝完這4個工具後。解壓uniread並安裝
tar -xzvf uniread-1.01.tar.gz
perl Makefile.PL
make
make install
三、使用uniread
以oracle用戶執行
[oracle@sigle uniread-1.01]$ uniread sqlplus /nolog [uniread] Loaded history (3 lines)
SQL*Plus: Release 10.2.0.4.0 - Production on 星期三 3月 21 23:41:19 2012
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
SQL> |
編輯.bash_profile加入以下別名
#ALIAS alias sq="uniread sqlplus /nolog" alias sqlplus="uniread sqlplus" alias rman="uniread rman" |
四、有關的安全問題
在oracle主目錄下有.bash_logout文件用戶用戶推出時執行的命令,相對於.bash_profile爲用戶登錄時執行的命令。可以編輯.bash_logout文件,刪除用戶主目錄下的.uniread文件夾下的sqlplus 或rman文件即可清除歷史記錄。刪除文件不影響下次uniread的使用,文件會自動創建。
rm -rf /home/oracle/.uniread/sqlplus rm -rf /home/oracle/.uniread/rman |
使用uniread後記錄歷史命令,其中可能會涉及到一些用戶的密碼[如sqlplus test/test],可以採取交互式輸入。或者採取如下方式,當用戶退出時清空歷史記錄:
vi .bash_logout #用戶退出登錄時,系統會執行的命令
> .uniread/sqlplus #添加該行在/usr/bin/clear前即可
> .uniread/rman #添加該行在/usr/bin/clear前即可
/usr/bin/clear
更爲高級的辦法可以自行編寫shell,shell的功能是去除上述兩個歷史記錄文件的中的sqlplus和conn等與密碼相關的行,oracle用戶註銷系統會話時,執行該shell,這樣一些與口令相關的內容會自動清除。