Как я могу перечислить все переменные оболочки?

(комментарий arved был правильным. Это решило мою проблему, но я все еще не понимаю точно, почему, если оператор рекомендовался, так или иначе. Таким образом я отправляю ответ как общественную Wiki. Не стесняйтесь улучшать его, если Вы знаете почему.)

Во-первых, узнайте, какой компилятор используется:

 $ cd /usr/ports/devel/gdb && make -V CC
 cc

cc компилятор C по умолчанию, но это должно быть ccache.

Решить проблему, редактирование /etc/make.conf и удалите оператор "if"...

.if (!empty(.CURDIR:M/usr/src*) || !empty(.CURDIR:M/usr/obj*))`

... и, конечно, его закрытие .endif оператор. Затем проблема решена:

 $ cd /usr/ports/devel/gdb && make -V CC
 /usr/local/libexec/ccache/world/cc
19
24.11.2018, 00:42
4 ответа

С комментариями я смог найти короткое и красивое решение:

find . -name '*.mkv' | while read f; do echo ffmpeg -i "$f" "${f%.*}.mp4"; done
-121--108681-

Целью опции umask mount является установка видимых разрешений каждого файла в файловой системе, когда сама файловая система не поддерживает разрешения Unix (обычно разрешения хранятся в файловой системе).

Поэтому umask параметра mount существует для NTFS (эта файловая система не поддерживает разрешения Unix), в то время как у нее нет причин для выхода для Ext4 (которая поддерживает разрешения Unix).

-121--114349-

Перечислите все переменные оболочки

bash : используйте set -o posix; набор . Опции POSIX позволяют избежать вывода слишком большого объема информации, например, определений функций. объявить -p также работает.

zsh : используйте typeset

Переменные оболочки и переменные среды

Переменная среды доступна для дочерних процессов exec () (в виде копии. Если родительский процесс изменяет переменную, дочерняя среда не обновляется). Переменная, не относящаяся к среде, доступна только для текущей рабочей оболочки и вложенных оболочек вилки () . Это различие присутствует во всех оболочках.

(выполнено благодаря комментариям)

21
27.01.2020, 19:45

с ZSH , вы можете использовать набор , что дает больше информации, чем Например, тип переменных. Вы все еще можете отфильтровать вывод с помощью GREP или SED , в зависимости от того, что вы хотите. Переменные среды помечены как экспортированы на выходе.

3
27.01.2020, 19:45

Целью опции umask mount является установка видимых разрешений для каждого файла в файловой системе, когда сама файловая система не поддерживает разрешения Unix (обычно разрешения хранятся в файловой системе, когда она его поддерживает).

Поэтому umask параметра mount существует для NTFS (эта файловая система не поддерживает разрешения Unix), в то время как у нее нет причин для выхода для Ext4 (которая поддерживает разрешения Unix).

-121--114349-

Можно использовать awk , например,

awk -F'|' 'NR==FNR {a[$1]=$0;next;}; !($1 in a) || ($0 != a[$1]);' File1 File2

На примере File1 и File2

$ awk -F'|' 'NR==FNR {a[$1]=$0;next;}; !($1 in a) || ($0 != a[$1]);' File1 File2
2620|256034|234567|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||
-121--73361-

Существует множество альтернатив:

printenv

Распечатайте значения указанных переменных среды. Если параметр VARIABLE не указан, для них всех необходимо напечатать пары имени и значения.

env

env - запуск программы в измененной среде

export

Наборов переменной среды. Пометить каждое имя, передаваемое дочерним процессам в среде.....

-p Дисплей выходных данных в форме, которую можно повторно использовать в качестве входных данных.

Если имена не указаны или задан параметр «-p», отображается список экспортированных имен.

набор

также полезен для получения переменных оболочки.

Если требуется дополнительная информация (целочисленная, экспортированная), вместо нее следует использовать

typeset

export имеет преимущество, заключающееся в том, что его выходные данные могут быть немедленно считаны обратно в оболочку.

Наконец, существует

compgen -v

Дисплея возможных дополнений в зависимости от вариантов.

, который показывает все переменные, оболочку и среду, без их значения или дополнительной информации. Для поиска значения переменной потребуется echo $ VARIABLE _ NAME . Но хотя бы список полный. Он принадлежит bash , а не zsh .

8
27.01.2020, 19:45

Мне просто нужно было перечислить только переменные, а не их значения. Для этого я использовал

env | awk -F '=' '{ print $1 }'

Чтобы все они были в одной строке

env | awk -F '=' '{ print $1 }' | tr '\n' ' '
1
17.04.2020, 19:21

Теги

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