我使用的是安装了 CentOS 的 VMWare 虚拟机。
我现在使用 BASH shell,但需要运行需要 C Shell 的应用程序。
一个人可以直接换壳吗?您需要重新安装所有软件吗?现有的软件可以工作吗?切换shell就那么容易吗?
我需要的程序有一个用 C Shell 编写的安装脚本,并且该程序需要 C Shell 才能运行。
答案1
应用程序(正确的)不会要求C 外壳;使用 csh 语法的包装器脚本将需要 C shell,在这种情况下,它的第一行应如下所示:
#!/bin/csh
或者
#!/bin/tcsh
或类似的。
您可以从 bash 执行该脚本,而无需将登录 shell 切换到 csh。
答案2
您可以使用名为的实用程序轻松更改自己用户的 shell,chsh
该实用程序默认安装在 CentOS 系统上。语法是:
chsh -s /bin/csh OR /bin/tcsh
在执行此操作之前,请确保您的系统中已安装 C Shell,它应显示/etc/shells
为 / bin/csh
(或/bin/tcsh
)。如果它不存在,我很确定您只需执行以下操作即可安装它yum install tcsh
(在我的 Ubuntu 16.04 LTS 上,它可以作为csh
)
您需要从系统中完全注销,然后重新登录才能使这些更改生效。
如果它只是您想要运行的脚本,只需在脚本顶部添加 shebang 标头,#!/bin/tcsh
或者#!/bin/csh
根据 .txt 中可用的名称添加 shebang 标头/etc/shells
。shebang header
是脚本中的第一行。
答案3
exec tcsh
将当前运行的 shell 替换为tcsh
.然后,如果软件要求使用各种命令来加载该应用程序的环境设置等,exec bash
则将替换当前 shell bash
(保留已设置的任何环境变量,无论好坏) 。source foo.cshrc
% exec bash
bash-4.2$ exec tcsh
$ exec zsh
%
如果没有详细信息,软件是否有效是一个相当难以回答的问题(请参阅:停止问题)
chsh
正如其他人指出的那样,外壳的变化可以变得更加持久。