免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11952 | 回复: 7
打印 上一主题 下一主题

csh和ksh怎么设置history [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-27 10:59 |只看该作者 |倒序浏览
ksh没成功过,在csh下测试:
我在 .cshrc 上写如下

set history=100 #在man page查到的
set HISTFILE=.history  #此句无效,在命令行下虽然可 echo $HISTFILE 可得到.histroy,但实际会自动产生一个.sh_history的文件
set HISTSIZE=100  #此句无效

目前只知道设置了 set history=100 后可以用history查到历史记录,但指定写道文件里的不清楚。


哪里有完整的描述,我需要产生history记录文件的配置。

论坛徽章:
0
2 [报告]
发表于 2007-09-27 11:00 |只看该作者
不要回复bash的方法,这个我测试是没问题的,顺便贴一个


bash的设置
运行 set|grep HISTFILE,默认的历史操作记录文件是 .bash_history
在.bash_profile 添加
HISTFILE=/root/test
export  HISTFILE

重新登录,会发现已经把记录写道/root/test 了。

其他设置都写在.bashrc可实现:

# 忽略重复的命令
export HISTCONTROL=ignoredups
# 忽略由冒号分割的这些命令
export HISTIGNORE="[   ]*:&:bg:fg:exit"
# 设置保存历史命令的文件大小
export HISTFILESIZE=1000000000
# 保存历史命令条数
export HISTSIZE=1000000

由于bash的history文件默认是覆盖,如果存在多个终端,最后退出的会覆盖以前历史记录,改为追加形式:
shopt -s histappend

实时写入,而不是退出shell才写入的方法:
PROMPT_COMMAND="history -a; $PROMPT_COMMAND"

论坛徽章:
0
3 [报告]
发表于 2007-09-27 11:02 |只看该作者
为表示我已经搜索过论坛,特整理一个关于此类的FAQ,如下:



Q1.请问root用户的.profile在什么地方啊?
A.
先echo $HOME一下,然后cd $HOME
再ls -a就能看见.profile了

在/etc/profile下!
你在根、下建立。profile也可以!

Q2.我在安装oracle 8i时,自己设定的环境变量和path都不起作用。

A.
改.dtprofile
去掉最后一行的#
不用图形终端(CDE),就不用改.dtprofile!!!


Q3.
.profile、.login和.dtprofile的关系 .我还是比较混乱它们之间的关系,能解释一下吗?
我认为如果在.dtprofile中不注释DTSOURCEFILE一行,就不会理会.profile和.login,但我试过如果这样的话,.dtprofile里面的SCRIPT竟然不能正常运行,很简单地设置一个PS1也不能返回预料中的结果。但直接运行.dtprofile是正常的,只是通过CDE进入的时候就不正常

A
.profile是ksh bsh用的
.login是csh用的
.dtprofile是CDE用的,如果想在CDE下调用.profile可以修改.dtprofie里的DTSOURCEFILEC(名字记得不是很清楚了)参数来实现。

Q4.根目录下的.profile文件与/ect/profile文件有什么区别?也就是有什么不同的功能?谢谢!
A
/.profile 只是给 root 用的, 而 /etc/profile 则对所有用户有效

Q5./etc/profile和/etc/environment?先将export LANG=zh_CN加入/etc/profile ,退出系统重新登录,登录提示显示英文。
将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统重新登录,登录提示显示中文。
用户环境建立的过程中总是先执行/etc/profile然后在读取/etc/environment。为什么会有如上所叙的不同呢?

A
应该是先执行/etc/environment,后执行/etc/profile。/etc/environment是设置整个系统的环境,而/etc/profile是设置所有用户的环境,前者与登录用户无关,后者与登录用户有关。系统应用程序的执行与用户环境可以是无关的,但与系统环境是相关的,所以当你登录时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,如果系统环境LANG=zh_CN,则提示信息是中文的,否则是英文的。

对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗?

/etc/enviroment --> /etc/profile --> $HOME/.profile  -->$HOME/.env (如果存在)

/etc/profile 是所有用户的环境变量
/etc/enviroment是系统的环境变量
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile  -->$HOME/.env

如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了。

Q6.root的.profile文件是指.dtprofile?如果不是,它的位置在哪,还有/etc/profile和个人home目录中有local.profile和.profile有什么驱别?

A
root的.profile在/目录下。local.profile在/etc/skel下,是个模版文件。用admintool创建用户时系统不会将模版文件复制到用户主目录,而用useradd命令时系统会将local.profile复制到用户主目录并改名为.profile,当然看你给用户定义什么SHELL了。不同SHELL用户用不同的文件:
BSHELL:.profile
KSHELL:.profile,.kshrc
CSHELL:.login,.cshrc
原因应该是jtw所说的用户环境和系统环境的区别了


Q7.
关于.cshrc .profile和.login相互之间的关系

A
如果默认的 login shell 为 borne shell,登录后执行 .profile 里的内容,如果 login shell 为 csh,则执行 .login  中的内容, .cshrc 进入 csh 时会执行一遍,不一定是登录,比如
user@host:~$  csh
user@host:~%
读入 .cshrc 。

Q8..dtprofile 和 .profile 有什么区别?
前者是再DCE环境下使用的,DCE环境下不使用.profile和profile。
Hi,
.dtprofile is sourced when you login using Desktop (CDE, etc), it's not sourced when you login through terminal (telnet, etc).

.profile is souced in almost all situations. But when you login through CDE, you have to uncomment the last line in the .dtprofile so that the .profile will be sourced.

Hope this explains.
补充一下:
在.dtprofile中,如果DTSOURCEPROFILE=true
则会执行.profile

Q9.如何找到某一个用户的profile文件.如何找到某一个用户的profile文件.useradd后,没建home dir.

A
给他建个home目录,系统会自动去认home目录下的.profile
具体方法:在/etc/passwd中加入abc:1001:24:ABC:/home/abc:/bin/ksh
解释:abc是用户名,x表示密码字段,1001是uid,24是gid,ABC是用户信息,/home/abc是用户home目录,系统会自己到下面去找.profile执行,/bin/ksh是用户默认使用的shell
如果你建立过用户但是没有指定目录,那么按照上面的格式补完整,home目录要手工建立的,把需要设置的环境写到home目录下的.profile去


Q10.我不小心删除了网管的.profile文件,请问能否恢复啊?

A
cp /etc/skel/local.profile $/.profile
然后加入你需要增加的PATH

Q11.请教高手,哪里有详细介绍.profile文件配置的资料。里面的路径什么的 都 怎么配啊?

A
http://osr507doc.sco.com/en/OSTut/Setting_your_path.html

Q12.怎样设置csh的环境变量,我的当前用户目录下有下列设置环境变量的文件(我觉得是): .cshrc, local.cshrc, .profile, local.profile,local.login 请问我应该选择那一个设置环境变量呢?在csh下怎样设置永久的PATH,永久的MANPATH, 永久的NETCDFHOME,永久的GMTHOME?

A
.cshrc里设置就可以啦,setenv
#cat .cshrc

# @(#)cshrc 1.11 89/11/29 SMI
umask 022
set path=(/bin /usr/bin /usr/ccs/bin /opt/SUNWspro/bin /etc .)
if ( $?prompt ) then
        set history=32
endif

setenv NETCDFHOME /usr/local/gmt/netcdf-3.6.1
setenv GMTHOME /usr/local/gmt
set path=(/usr/local/gmt/bin $path)
set manpath=(/usr/local/gmt/man/manl)

论坛徽章:
0
4 [报告]
发表于 2007-09-29 15:03 |只看该作者
顶!!

论坛徽章:
0
5 [报告]
发表于 2007-10-08 13:56 |只看该作者
没一个人知道?还是觉得问题太低级了?

论坛徽章:
0
6 [报告]
发表于 2013-06-06 17:13 |只看该作者
同问,csh 怎么设置history 的时间格式,HISTTIMEFORMAT没有作用~``~ 楼主知道请帮忙解惑

论坛徽章:
0
7 [报告]
发表于 2014-03-17 13:15 |只看该作者
帮顶.这个问题7年了,居然还亮着天窗. shell版的大牛赶紧来patch. 以bobkey 的学习能力,估计现在也是大牛了.

论坛徽章:
0
8 [报告]
发表于 2014-03-17 13:15 |只看该作者
帮顶.这个问题7年了,居然还亮着天窗. shell版的大牛赶紧来patch. 以bobkey 的学习能力,估计现在也是大牛了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP