linux - 使用命令的 tcsh 登录 shell

标签 linux shell tcsh

我想让 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/

相关文章:

linux - 将 kafka 代理 ID(zookeeper-shell.sh 结果)保存到 bash 脚本中的变量

c - 如何在文件末尾自动追加换行符

tcsh 中匹配的字符串/子字符串

linux - 并行作业的控制台输出在 tcsh 中出现偏差

php - 在 Symfony2 项目中的 "post-update-cmd"上运行命令

c++ - 在 C++、Linux 中获取像素的颜色

linux - 获取一个文件中不存在于另一个文件中的值

excel - 如何加速 VBA for Mac 中的 shell 函数

linux - Sed 命令给出意想不到的结果

debugging - 如何在 tcsh 脚本中回显命令?