Условное форматирование openxlsx R

Ядро не выполнит сценарий, если интерпретатор

  • указан как абсолютный путь, или
  • указан как путь относительно текущего рабочего каталога

Тогда, если ядро ​​отказывается выполнять скрипт, ваша оболочка может [// g0] взять верх и попытаться выполнить ее в любом случае, интерпретируя строку shebang в соответствии со своими собственными правилами (например, найти исполняемый файл в $PATH, например).

zsh пытается это сделать. sh не делает.

Однако способ zsh интерпретирует shebang (и, возможно, последующие строки) действительно действительно странно. Похоже, он всегда ожидает аргумент single после имени команды. Посмотрите, что он делает:

$ cat test.py 
#!python3 -b -i 

x=5
print('The value of x is ' + str(x))
$ strace -f -e execve zsh
execve("/bin/zsh", ["zsh"], 0x7ffd35c9e198 /* 78 vars */) = 0
host% ./test.py 
strace: Process 5510 attached
[pid  5510] execve("./test.py", ["./test.py"], 0x558ec6e46710 /* 79 vars */) = -1 ENOENT (No such file or directory)
[pid  5510] execve("/usr/bin/python3", ["python3", "-b -i", "./test.py"], 0x558ec6e46710 /* 79 vars */) = 0
[pid  5510] execve("/usr/lib/python-exec/python3.4/python3", ["/usr/lib/python-exec/python3.4/p"..., "-b -i", "./test.py"], 0x7fffd30eb208 /* 79 vars */) = 0
Unknown option: - 
usage: /usr/lib/python-exec/python3.4/python3 [option] ... [-c cmd | -m mod | file | -] [arg] ...
Try `python -h' for more information.
[pid  5510] +++ exited with 2 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=5510, si_uid=1000, si_status=2, si_utime=0, si_stime=0} ---
host% 
+++ exited with 2 +++

Посмотрите, как ["python3", "-b -i", "./test.py"] передаются в качестве аргументов. Мне кажется очень противоречащим мне объединить два переключателя -b и -i вместе, но это то, что делает zsh. Python, очевидно, этого не понимает.

Когда аргументов нет, точное поведение зависит от наличия пробела после имени программы, но в любом случае это странно. Проверьте его с strace самостоятельно, потому что вы не собираетесь мне верить.

Я понимаю, что обработка zsh строки shebang просто глючит.

0
задан Rafael Arevalo 20 January 2019 в 07:19
поделиться