В чем оболочка - я?

Это могло бы представлять интерес для Вас http://www.codeplex.com/SharePointMVC

, Это - в основном библиотека для помощи рендерингу ASP.MVC в SharePoint masterpage.

Все еще первые годы, но Вы получаете идею.

41
задан Dave Jarvis 31 August 2015 в 21:58
поделиться

5 ответов

Я хочу что-то похожее на uname , pwd , whoami . Просто простая утилита с простым выводом.

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

Некоторые ответы здесь отлично работают в Linux.

-1
ответ дан 27 November 2019 в 00:42
поделиться

Команда или путь к запущенной в данный момент оболочке хранится в переменной среды $ 0 . Чтобы увидеть его значение, используйте:

echo $0

Это выводит либо текущую запущенную оболочку , либо путь к вашей текущей запущенной оболочке, в зависимости от того, как она была вызвана. Может потребоваться некоторая обработка:

prompt:~$ echo $0
/bin/bash
prompt:~$ sh
sh-4.0$ echo $0
sh
sh-4.0$ exit
exit
prompt:~$ /bin/sh
sh-4.0$ echo $0
/bin/sh
sh-4.0$

Переменная среды $ SHELL содержит предпочтительную оболочку пользователя, не обязательно текущую оболочку.

55
ответ дан 27 November 2019 в 00:42
поделиться

Если вы не укажете программу в строке shebang, я полагаю, что будет использоваться / bin / sh. К сожалению, я не верю, что существует хороший переносимый способ определить, что это за оболочка.

Если вы, например, используете Linux, вы можете узнать путь к исполняемому файлу через / proc :

$ readlink "/proc/$$/exe"
/bin/dash

, и получить имя исполняемого файла легко с помощью ps $$ .

Но это не поможет вам ни с типом оболочки (кроме таблицы поиска известных оболочек), ни с версией ( AFAICT, нет даже способа получить версию с тире)

7
ответ дан 27 November 2019 в 00:42
поделиться

Попробуйте ($$ - это переменная оболочки, для которой задан идентификатор процесса оболочки):

ps -ef | grep $$

или попробуйте это (/ proc / self также является идентификатором процесса оболочки):

ps -ef | grep /proc/self

Что касается "-bash" - тире означает это оболочка входа в систему. Снова введите bash, и теперь вы увидите, что оболочка просто "bash" (без тире)

5
ответ дан 27 November 2019 в 00:42
поделиться

Вместо того, чтобы пытаться определить, какая оболочка используется в настоящее время, обычно более целесообразно просто повторно выполнить запуск в качестве желаемой оболочки. Это может быть не чем иным, как историческим обходным путем того факта, что не существует надежного переносимого способа определения оболочки, которую вы в настоящее время используете. Лучше всего написать сценарий для работы в максимально возможном количестве оболочек, чтобы это не было проблемой. (например, переносимость имеет значение, независимо от того, сколько людей хотят утверждать, что «bash везде»)

1
ответ дан 27 November 2019 в 00:42
поделиться
Другие вопросы по тегам:

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