Как узнать, был ли мой скрипт Python вызван с помощью интерпретатора в командной строке или как исполняемый файл (через shebang )?

Я только что узнал из Arch Linux Wiki , что можно смонтировать общий ресурс sftp -с помощью sshfs. Я запускаю сервер sftp -с chroot и джейлом , и sshfs работает очень хорошо.

  1. Крепление:sshfs @:
  2. Размонтировать:fusermount -u

0
27.04.2020, 23:40
1 ответ

Этого можно добиться, используя переменную окружения, которая (косвенно )устанавливается через строку shebang.

Теоретически та же самая переменная может быть установлена ​​в оболочке, но если кто-то не попытается явно обмануть механизм обнаружения, это должно быть нормально.

К сожалению, строка shebang ограничена двумя аргументами, чего недостаточно (по крайней мере, я не знаю о таком решении ). Таким образом, вам нужен вспомогательный скрипт. К счастью, ядро ​​Linux не требует, чтобы интерпретатор shebang был двоичным :

.

/usr/local/bin/shebang-bash.sh

#! /bin/bash
via_shebang=1 bash "$1"

Затем вы используете этот скрипт как интерпретатор шебанга:

#! /usr/local/bin/shebang-bash.sh

В скрипте вы просто проверяете значение/существование $via_shebang.

0
19.03.2021, 02:25

Теги

Похожие вопросы