Linux

聲明我自己的腳本來執行文件

  • February 10, 2011

我有兩個文件,第一個是’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.

引用自:https://serverfault.com/questions/233766