Назад | Перейти на главную страницу

Объявить мой собственный скрипт для выполнения файла

У меня есть два файла, первый - «топор»:

#!/usr/bin/env zsh

print "Params: $*"
cat $*

И еще один tst:

#! /home/me/ax
A
B
C

Когда я нахожусь в оболочке sh / csh / bash:

> ./tst
./tst: line 2: A: command not found
./tst: line 3: B: command not found
./tst: line 4: C: command not found

Когда я нахожусь в оболочке zsh:

Params: ./tst
#! /IW/users-home/e640846/ax
A
B
C

Есть ли стандартный способ добиться того же поведения, которое я получаю в оболочке zsh в другой оболочке?

точность: - версия bash: 3.00.15- (1) выпуск (x86_64-redhat-linux-gnu)

Спасибо

Интерпретируемый сценарий не может иметь интерпретатора, в свою очередь, другого сценария, поэтому функция exec * () ядра не работает с ENOEXEC.

На этом этапе POSIX требует, чтобы оболочка интерпретировала сам сценарий. SUSv3, «Поиск и выполнение команд», 1.d.i.b второй абзац.

Но zsh не является оболочкой POSIX. Вместо этого zsh смотрит на #! line и пытается запустить ее, передав ей исходный скрипт в качестве аргумента. Вот что здесь произошло - вам не удалось использовать ax как переводчик для tst, обработка содержимого tst; ты только что прошел tst как параметр ax.