Переменная среды SHELL по-прежнему указывает на zsh после использования bash

Conawk:

awk '!first[$3, $4]{ first[$3, $4]= $0 } { last[$3, $4]= $0 }
    END{ for (x in last) print first[x] (last[x] != first[x]? ORS last[x]:"") }' infile
2018-05-24 23:58:12 8.8.8.8 8.8.4.4
2018-05-24 23:59:51 8.8.8.8 8.8.4.4
2018-05-24 23:57:30 1.1.1.1 8.8.4.4
2018-05-24 23:57:32 2.2.2.2 8.8.4.4

la matriz asociada firstmantiene la primera línea ocurrida con la combinación de teclas de columna #3 y columna #4, pero la matriz lastmantiene la última línea con esas mismas claves cada vez.

Después de leer todas las líneas, los valores en la matriz firstson ​​las líneas que ocurrieron al principio (con una columna diferente #3, #4 )y los valores en lastson las líneas que ocurrieron al final.

Luego, en END, imprima los valores guardados en la matriz firsty luego en last. Este (last[x] != first[x]? ORS last[x]:"")se usa para evitar la duplicación de la línea cuando esa es la única línea única sin una combinación repetida de columnas 3 y 4.

5
09.06.2019, 14:36
2 ответа

SHELL — это переменная среды, которая передается из bash в zsh при вызове zsh. SHELL не является одним из параметров , устанавливаемых оболочкой в zsh, поэтому его значение остается неизменным.

bash$ SHELL=turtle zsh
zsh$ echo $SHELL
turtle 

Чтобы узнать, что вы находитесь в оболочке zsh, попробуйте:

echo $ZSH_NAME
echo $0

Переменная SHELLтрадиционно устанавливается программой login«как указано в базе данных паролей». (Скопировано из Что устанавливает переменную окружения $SHELL?)

4
27.01.2020, 20:38

Многие оболочки устанавливают переменную версии при запуске.

bashиспользуйте BASH _ВЕРСИЯ и zshиспользуйте ZSH _ВЕРСИЯ.

Присвоение обеим переменным известного значения надежно определит, какая оболочка была запущена:

BASH_VERSION=notbash ZSH_VERSION=notzsh sh -c 'echo "$BASH_VERSION $ZSH_VERSION"'

напечатает notbash 5.3.1, если sh — это zsh, или 5.0.2(2)-release notzsh, если sh — это bash.

К сожалению, ksh segfaults при использовании KSH _VERSION со строковым значением.

2
27.01.2020, 20:38

Теги

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