Завершение zsh для scp завершает работу локальных пользователей при подключении к удаленному серверу

Поскольку вы указали Linux, это можно сделать с помощью readlink -f /proc/$$/exe. Это даст вам (на стандартном выходе )путь к оболочке, выполняющей ваш сценарий оболочки (что-то вроде/bin/bash). Таким образом, вы можете назначить его переменной (по крайней мере в оболочке POSIX )с помощью var=$(readlink -f /proc/$$/exe).

$$— pid текущей оболочки; /proc/«pid»/exe— это функция ядра, которая позволяет вам запрашивать исполняемый файл, запущенный с заданным pid, в форме несколько «волшебной» символической ссылки. Таким образом, вы можете использовать readlink, чтобы получить путь.

В системах, отличных от -Linux, вы должны иметь возможность использовать ps, например, ps -o args= $$, но это может привести к тому, что вместо этого вы получите имя сценария (POSIX допускает любое поведение ).

За исключением случаев, когда ваш сценарий предназначен для использования, например, для установки переменных в пользовательской оболочке, вам действительно следует использовать строку #!вверху вместо того, чтобы указать, в какой оболочке его запускать.

2
31.07.2020, 07:36
0 ответов

Теги

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