linux - 如何从 bash shell 系统运行 tcsh 脚本?

标签 linux bash shell tcsh

所以我有一些与昂贵软件相关的 tcsh 脚本,我必须在 bash shell 系统上运行它们。这可能吗?该软件经常需要这些脚本,并且基于 tcsh。是否可以同时运行 2 个 shell?或者只是在脚本开头调用 tcsh shell?或者是否有任何编译器来翻译 shell 脚本?我有哪些选择?谢谢。

最佳答案

简单地输入一个适当的shebang在脚本的顶部。

假设你的 tcsh 安装为 /bin/tcsh,每个 tcsh 脚本的第一行应该是这样的:

#!/bin/tcsh -f

(-f 告诉 shell 不要加载您的启动脚本,例如 .login.tcshrc。任何脚本都不应该取决于您的用户环境,因此您不需要调用启动脚本——这将使您的脚本加载得更快。请注意,-f 对于 Bourne 派生的 shell 具有不同的含义;使用-f 仅适用于 csh 和 tcsh 脚本。)

如果您不能轻而易举地假设 tcsh 的安装位置,另一种方法是:

#!/usr/bin/env tcsh

但这不允许您使用 -f 选项,而且它可能还有其他缺点;见this answer了解详情。

请注意,实际上并没有“bash shell 系统”这样的东西。 bash 和 tcsh 都只是您可以运行的程序。一个或另一个可能恰好是新创建的用户帐户的默认交互式 shell,但这并不影响能够运行它们中的任何一个。

关于linux - 如何从 bash shell 系统运行 tcsh 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645842/

相关文章:

regex - 用于重命名多个文件的 Bash 终端命令

python - 将参数从 python 程序传递给 shell 脚本

shell - 从 CURL 保存的 cookie 文件中读取 session ID

linux - linux 64 位汇编语言中的段错误(初学者)

linux - 奇异并行查询

可以执行此批处理命令工作的 Linux 命令

c# - 通过 windows 服务器上的 windows-service 检查 ubuntu 服务器上的服务状态

linux - linux 上的 cilk 和 glibc

bash - 在 Unix 中使用 shell 脚本删除超过 10 天的文件

bash - 使用 sed 替换动态生成的字符串