加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

shell – 如何确定我的csh版本?

发布时间:2020-12-15 22:41:19 所属栏目:安全 来源:网络整理
导读:我有一些适合我的代码,但是当我把它交给一些同事时,它就破了.他们正在使用tcsh,而据我所知,我正在使用csh. 我试过了: csh -vcsh --versioncsh -Vcsh --helpcsh -h 没有成功(他们都只是带我直接到翻译提示).我也为字符串“version”找到了man页面,但我也没有
我有一些适合我的代码,但是当我把它交给一些同事时,它就破了.他们正在使用tcsh,而据我所知,我正在使用csh.

我试过了:

csh -v
csh --version
csh -V
csh --help
csh -h

没有成功(他们都只是带我直接到翻译提示).我也为字符串“version”找到了man页面,但我也没有想出任何有用的东西.有没有办法确定我安装的csh版本?

– 编辑 –

在/ bin / csh的符号链接之后,它们似乎终止于/ bin / bsd-csh,这似乎意味着我正在使用一些BSD风味的csh shell,如果它可以帮助任何人.另外,我正在使用ubuntu linux.

解决方法

在评论中,您已表明您使用的是Ubuntu,并且/ bin / csh是/ etc / alternatives / csh的符号链接,这是/ bin / csh的符号链接.

The csh shell起源于BSD Unix,所以csh是/ bin / bsd-csh的间接符号链接并不奇怪.它可以追溯到1978年左右,之后Unix程序报告自己的版本号变得普遍.

既然你在Ubuntu上,这个:

dpkg -l csh

应该告诉你你的版本 – 尽管Debian / Ubuntu软件包的版本号可能不比你已经拥有的信息更有用.包版本号和shell版本之间的关系并不完全清楚.

我假设这是正确的包名.如果没有,请尝试dpkg -S / bin / bsd-csh.

您可以判断是否正在运行tcsh,如下所示:

if ($?tcsh) then
    echo This is tcsh
else
    echo This is csh,not tcsh
endif

tcsh应该与csh向后兼容,具有一些额外的功能,主要用于交互式使用.如果使用特定于tcsh的功能,为ccsh编写的脚本很容易在csh下失败,但我希望tcsh能够处理csh脚本.正如tcsh(1)手册页所说:

tcsh is an enhanced but completely compatible version of the Berkeley UNIX C shell,csh(1).

我知道您可能无法发布整个失败的脚本,但是您是否可以发布一个适合您的小代表示例并且对您的同事失败?

一个解决方案可能是要求同事在他们的系统上安装vanilla csh;他们仍然可以使用/ bin / tcsh作为他们的交互式shell,但是#!/ bin / csh会导致脚本由旧的csh执行,而不是tcsh.

最后,如果不添加指向this的链接,我无法回答有关[t] csh脚本的问题.

附录:我可以使用不是tcsh的/ bin / csh访问Solaris系统;如果你愿意,我可以在那里进行一些简单的测试.一个数据点:/ bin / tcsh和/ bin / csh都接受:作为null命令,但是使用/ bin / csh它不接受参数:

% :
% arg
:: Too many arguments

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读