roolcz 发表于 2012-11-19 18:19

关于freebsd里面csh的内部数据。。

这么描述:我用root登录freebsd9.0默认shell是csh
然后我cd /usr/ports/shell/bash&& make install clean
然后我执行bash提示找不到这个命令,
但是我执行whereis bash 能看到路径在/usr/local/bin/bash
我退出当前登录,重新登录shell后,执行bash顺利进入bash的环境。。

这里就有个疑问,我安装好bash后,执行bash,难道csh不会去搜索PATH路径,而是在csh自身的数据库(假定有一个)里面搜索,搜索不到就没有。。
而重新登录csh后能找到bash命令,是因为登录csh的时候,重新把PATH路径的命令载入了csh自身的数据库?

但是我在bash下就没有这个问题,我在bash下面 cd /usr/ports/editors/vim&& make install clean 然后输入vim直接就能用,
而如果我在csh下面,,虽然我成功make了,但是直接输入vim,csh就是找不到,除非重新登录或者是输入全路径,,

大家有遇到这样的么?我遇到这个问题很久了。。。。

wenheping 发表于 2012-11-19 21:07

make install之后rehash

lsstarboy 发表于 2012-11-19 21:15

二楼正解,FreeBSD这点有点麻烦,新安装的软件必须rehash一下才能找到。

roolcz 发表于 2012-11-27 17:06

原来这样,果然是存在csh内部的hash表中,
那有没有办法设置自动刷新hash不?或者不读内部hash表,而是每次都从文件系统里面搜索
bash就不需要这样啊?csh应该也有相应的配置选项吧?不知二位是否知道?
回复 3# lsstarboy 回复 2# wenheping


   

fender0107401 发表于 2012-11-28 08:31

貌似没有,只能是自己rehash。

芭比小柒 发表于 2012-11-28 09:40

tcsh有https://www.freebsdchina.org/forum/viewtopic.php?p=272726&sid=47217cf3bea566813737923b456f8982

love2006 发表于 2012-11-28 12:29

PATH 环境变量没更新

ulovko 发表于 2012-11-28 12:29

exit / rehash
rehash 是最简便的方法了

roolcz 发表于 2012-11-28 15:50

回复 6# 芭比小柒
我看到了,新版的tcsh的确是有set autorehash=1的选项,
但是freebsd9.0默认的csh和tcsh是6.17.00
而且我diff /bin/csh /bin/tcsh发现没任何区别,两个有都不是软链接,比较奇怪。。
我在ports里面也很奇怪的没找到csh 和tcsh的port
有个ch 有个tcsh_nls 有个tcshrc就是没csh和tcsh
想升级csh和tcsh到最新版,不知道应该怎么做?难道我得去tcsh.org下载最新版,然后编译安装?

   

zeissoctopus 发表于 2012-11-28 18:46

roolcz 发表于 2012-11-28 15:50 static/image/common/back.gif
我看到了,新版的tcsh的确是有set autorehash=1的选项,
但是freebsd9.0默认的csh和tcsh是6.17.00

FreeBSD 9.1-RC3 的 csh/tcsh 已更新至 6.18.01 版本,支援 set autorehash
页: [1] 2
查看完整版本: 关于freebsd里面csh的内部数据。。