Как узнать, какую оболочку я использую в данный момент? [дубликат]

Команда, которую вы ищете - args:

Например:

:args /path_to_dir/*.py

или

:args /path_to_dir/**/*.py

** для рекурсивного поиска файлов. (Как предложил @the_velour_fog)

откроет все файлы, имеющие расширение .py в каталоге.

После открытия файлов используйте :tab all, чтобы поместить их в отдельные вкладки.

96
18.03.2011, 04:09
2 ответа

Si lo tienes guardado en tus variables de entorno puedes usar lo siguiente:

echo $SHELL

Para precisión en muchos shells diferentes, debe usar

ps -p $$

¿Por qué funciona esto?

echo $$ # 998

¿Cuál es ese número?

Es el process iddel shell actual.

$se expande al mismo valor que el shell actual.

$$ID de proceso del padre en un subshell

Si solo desea el nombre del shell, puede usar

ps -p $$ | awk '{if(NR>1)print}' | awk '$0=$NF' | tr -d -

En pocas palabras, estamos tomando la salida del subcapa del proceso y canalizándola a algunas herramientas de formato awk, sed y tr que funcionan para esto, eliminando las primeras 3 columnas, la primera línea de salida y luego -da solo el nombre del shell. Considere poner eso en una función para facilitarlo más adelante.

3
20.08.2021, 13:39

Есть два очень простых способа:

  • С помощью командыps:

    ps -o comm= $$
    

    или

    ps -h -o comm -p $$
    

    где:

    • -hили завершить все опции с помощью =, чтобы не показывать заголовок.
    • -o commдля отображения только базового имени процесса(bashвместо/bin/bash).
    • -p <PID>перечислить только процессы с предоставленным списком форм PID.
  • Использование/procпсевдофайловой системы информации о процессе -:

    cat /proc/$$/comm
    

    Эта опция работает точно так же, как команда psвыше.

    или

    readlink /proc/$$/exe
    

    Это /proc/PID/exeссылка на исполняемый файл, который в данном случае будет указывать на /bin/bash, /bin/ksh и т. д.

    Для получения только имени оболочки вы можете просто использовать

    basename $(readlink /proc/$$/exe)
    

    Это единственный вариант, который всегда будет давать один и тот же результат, даже если вы находитесь в сценарии, исходном коде или терминале, как ссылки на двоичный файл используемого интерпретатора оболочки.

    Предупреждение Вы должны знать, что это покажет окончательный двоичный файл, поэтому ksh может быть связан с ksh93 или sh с bash.

Использование /procдействительно полезно через /proc/self, который связывается с PID текущей команды.

7
20.08.2021, 13:39

Теги

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