我希望让tcsh启动一个登录shell并执行一个命令。
我试过这个:
tcsh -l -c ls但得到了以下错误消息:
Unknown option: `-l'
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].这个文档纠正了我的理解;只有当-l是唯一的参数时,才能使用它。但是,said doc还指出,指定“-”将有效,但这会导致一个不同的错误:
> tcsh - -c ls
-: No such file or directory.有什么建议吗?
发布于 2015-09-17 17:10:24
你误解了它对-的看法,尽管我承认它的措辞很混乱。它说的论点必须是-。参数0是程序本身的名称,而不是命令行中命令之后的参数。
它的实际工作方式是,如果argv[0]以-开头,则它以登录shell的形式运行。检查argv[0]的第一个字符是shell通常如何检测到它们在登录期间运行。这是因为当您真正登录时,系统执行登录shell时没有参数,而是在shell名称之前添加了一个-前缀。您可以在ps中看到这一点,您经常会看到像-tcsh和-bash这样的命令--它们是登录shell。
正如注释中所建议的那样,您可以通过将命令传递到shell的标准输入来执行您想做的事情:
echo ls | tcsh -lhttps://stackoverflow.com/questions/32635599
复制相似问题