我想让 tcsh 启动登录 shell 并执行命令。
我试过这个:
tcsh -l -c ls
但是得到这个错误信息:
Unknown option: `-l'
Usage: tcsh [ -bcdefilmnqstvVxX ] [ argument ... ].
这doc纠正了我的理解; -l 只能在它是唯一参数时使用。但是,该文档还指出指定“-”会起作用,但这会导致不同的错误:
> tcsh - -c ls
-: No such file or directory.
有什么建议吗?
最佳答案
您误解了它所说的关于 -
的内容,尽管我承认措辞令人困惑。它表示参数 0 必须是 -
。参数 0 是程序本身的名称,而不是命令行中命令后的参数。
它实际工作的方式是,如果 argv[0]
以 -
开始,它作为登录 shell 运行。检查 argv[0]
的第一个字符是 shell 通常检测它们在登录期间正在运行的方式。这是因为当您真正登录时,系统会不带任何参数地执行您的登录 shell,但会在 shell 名称前添加一个 -
前缀。您可以在 ps
中看到这一点,您会经常看到像 -tcsh
和 -bash
这样的命令——它们是登录 shell。
正如评论中所建议的,您可以通过将命令传送到 shell 的标准输入来执行您想要的操作:
echo ls | tcsh -l
关于linux - 使用命令的 tcsh 登录 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32635599/