在bash中运行CSH可执行文件会引发语法错误

Briennakh

我需要在MacOS X High Sierra上运行NACCESS程序。

最突出的错误是 if: Expression Syntax.

该错误可能是因为NACCESS可执行文件是带有#!/bin/csh第一行的CSH脚本

我将第一行更改为#!/bin/bash并开始出现诸如 ./naccess: line 14: syntax error near unexpected token `1' ./naccess: line 14: ` exit(1)'

再次,我认为这是发生的,因为可执行文件需要在CSH Shell中执行,而不是bash。根据此资源exit(1)格式化为CSH shell格式,而bash需要格式化exit 1

我尝试输入cshTerminal来切换外壳,但是一个echo $SHELL命令只是告诉我我仍然在bash中。

我查看了使用的shell选择,grep '^#!' /usr/bin/*但找不到任何CSH shell。我尝试tcsh使用自制软件下载但是我现在真的不知道我在做什么。

我知道不鼓励使用CSH shell,但是如何在Mac上启动并运行CSH shell,或者如何使NACCESS运行?

[编辑]这是NACCESS代码的前几行:

(请注意,我正在使用.pdb文件参数运行它,并且已经适当地设置了path_to_naccess_repository。usage naccess pdb_file [-p probe_size] [-r vdw_file] [-s stdfile] [-z zslice] -[hwyfaclqb]如果仅运行,我确实会获得读数./naccess

#!/bin/csh
set EXE_PATH = /path/to/repo
#naccess_start

set nargs = $#argv
if ( $nargs < 1 ) then
   echo "usage naccess pdb_file [-p probe_size] [-r vdw_file] [-s stdfile] [-z zslice] -[hwyfaclqb]"
   exit(1)
endif

set PDBFILE = 0
set VDWFILE = 0
set STDFILE = 0
set probe = 1.40
set zslice = 0.05
set hets = 0
set wats = 0
set hyds = 0
set full = 0
set asao = 0
set cont = 0
set oldr = 0
set nbac = 0

while ( $#argv )
  switch ($argv[1])
     case -[qQ]:
    echo "Naccess2.1 S.J.Hubbard June 1996"
    echo "Usage: naccess pdb_file [-p probe_size] [-r vdw_file] [-s stdfile] [-z zslice] -[hwyfaclq]"
    echo " "
    echo "Options:"
    echo " -p = probe size (next arg probe size)"
    echo " -z = accuracy (next arg is accuracy)"
    echo " -r = vdw radii file (next arg is filename)"
    echo " -s = standard accessibilities file (next arg is filename)"
    echo " -h = hetatoms ?"
    echo " -w = waters ?"
    echo " -y = hydrogens ?"
    echo " -f = full asa output format ?"
    echo " -a = produce asa file only, no rsa file ?"
    echo " -c = output atomic contact areas in asa file instead of accessible areas"
    echo " -l = old RSA output format (long)"
    echo " -b = consider alpha carbons as backbone not sidechain"
    echo " -q = print the usage line and options list"
    echo " "
        exit
        breaksw
     case -[pP]:
    shift
    set probe = $argv[1]
    breaksw
     case -[zZ]:
        shift
        set zslice = $argv[1]
    breaksw
     case -[hH]:
        set hets = 1
    breaksw
     case -[wW]:
        set wats = 1
        breaksw
     case -[yY]:
        set hyds = 1
        breaksw
     case -[rR]:
        shift
        set VDWFILE = $argv[1]
        breaksw
     case -[sS]:
        shift
        set STDFILE = $argv[1]
        breaksw
     case -[fF]:
        set full = 1
        breaksw
     case -[aA]:
        set asao = 1
        breaksw
     case -[cC]:
        set cont = 1
        breaksw
     case -[lL]:
        set oldr = 1
        breaksw
     case -[bB]:
        set nbac = 1
        breaksw
     default:
        if ( -e $argv[1] && $PDBFILE == 0 ) then
       set PDBFILE = $argv[1]
        endif
    breaksw
  endsw
  shift
end
#
if ( $PDBFILE == 0 ) then
  echo "usage: you must supply a pdb format file"
  exit(1)
endif

[编辑]我没有正确设置路径>。<所以这个问题主要是关于如何使bsh中的csh脚本运行。这个csh脚本没有问题。

卡巴努斯

SHELL变量仅列出您的第一个登录外壳程序,如果您运行另一个外壳程序则不会更改。echo $0会告诉你你正在跑步csh您可以选择bash将shebang更改为tcsh

#!/usr/bin/tcsh -f

或完全删除shebang并运行

csh ./naccess

如果您要选择第一个选项,但不确定在哪里csh,只需点击

which csh

找到路径。正如@Chepner所添加的那样,由于该文件带有cshshebang,因此请不要触摸它,而是按上面的方式运行它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行可执行文件的语法?

特定的可执行文件名在 C 中产生语法错误

Bash:在后台运行可执行文件

尝试在C ++代码中运行C ++可执行文件会暂停程序

安装的程序可执行文件从错误的位置运行

为什么运行“错误”的可执行文件?

bash在错误的地方寻找python可执行文件

覆盖可执行文件会影响运行原始可执行文件的进程吗?

在dockerfile中运行可执行文件

在Azure Function中运行.exe可执行文件

在来宾可执行文件中运行节点模块

在Jmeter中运行C可执行文件(测试)

在C#dockerfile中运行可执行文件

在git-bash中运行Perl可执行文件

在bash中启动的可执行文件顺序

在可执行文件之后运行&&

从makefile运行可执行文件

运行可执行文件

Dockerfile运行可执行文件

Pycharm中的“未指定可执行文件”错误

通过PowerShell运行可执行文件并使其正确返回可执行文件的错误代码

正在运行的进程是否会损坏其目录中的可执行文件和文件(当前正在使用)

“ bash可执行文件”和“ bash -c可执行文件”之间的区别

1如何捕获使用Java代码运行的可执行文件引发的异常?

可执行文件包装程序,从PATH的末尾运行原始可执行文件

Maven可执行文件Jar在启动时引发错误

如何使用bash脚本在其他文件夹中运行可执行文件?

错误:无法找到可执行文件:在 ADO 管道中运行 Azure CLI 任务时“powershell”

尝试详细运行docker容器或docker exec时,在$ PATH中找不到错误可执行文件