首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用命令的tcsh登录shell

使用命令的tcsh登录shell
EN

Stack Overflow用户
提问于 2015-09-17 16:39:01
回答 1查看 1.5K关注 0票数 3

我希望让tcsh启动一个登录shell并执行一个命令。

我试过这个:

代码语言:javascript
复制
tcsh -l -c ls

但得到了以下错误消息:

代码语言:javascript
复制
Unknown option: `-l'
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].

这个文档纠正了我的理解;只有当-l是唯一的参数时,才能使用它。但是,said doc还指出,指定“-”将有效,但这会导致一个不同的错误:

代码语言:javascript
复制
> tcsh - -c ls
-: No such file or directory.

有什么建议吗?

EN

回答 1

Stack Overflow用户

发布于 2015-09-17 17:10:24

你误解了它对-的看法,尽管我承认它的措辞很混乱。它说的论点必须是-。参数0是程序本身的名称,而不是命令行中命令之后的参数。

它的实际工作方式是,如果argv[0]-开头,则它以登录shell的形式运行。检查argv[0]的第一个字符是shell通常如何检测到它们在登录期间运行。这是因为当您真正登录时,系统执行登录shell时没有参数,而是在shell名称之前添加了一个-前缀。您可以在ps中看到这一点,您经常会看到像-tcsh-bash这样的命令--它们是登录shell。

正如注释中所建议的那样,您可以通过将命令传递到shell的标准输入来执行您想做的事情:

代码语言:javascript
复制
echo ls | tcsh -l
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32635599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档