Linux
聲明我自己的腳本來執行文件
我有兩個文件,第一個是’ax’:
#!/usr/bin/env zsh print "Params: $*" cat $*
還有一個’tst’:
#! /home/me/ax A B C
當我在 sh/csh/bash shell 中時:
> ./tst ./tst: line 2: A: command not found ./tst: line 3: B: command not found ./tst: line 4: C: command not found
當我在 zsh shell 中時:
Params: ./tst #! /IW/users-home/e640846/ax A B C
有沒有一種標準方法可以讓我在其他 shell 中的 zsh shell 中獲得行為?
精度:- bash 版本:3.00.15-(1) 版本 (x86_64-redhat-linux-gnu)
謝謝
解釋的腳本不能讓解釋器反過來成為另一個腳本,因此核心 exec*() 失敗並顯示 ENOEXEC。
此時,POSIX 要求 shell 解釋腳本本身。SUSv3,“命令搜尋和執行”,1.dib 第二段。
但是 zsh 不是 POSIX shell。相反,zsh 查看該
#!
行並嘗試自行執行,將原始腳本作為參數傳遞給它。這就是這裡發生的事情——你沒有成功地ax
用作 ; 的解釋器tst
,處理 ; 的內容tst
。你只是tst
作為參數傳遞給ax
.