Как распечатать переменные оболочки и значения для сможения скопировать/вставить им?

Как уже объяснено, это произошло из-за пропавших без вести 32-разрядных библиотек. Как продолжение при обнаружении с проблемой Вы могли бы хотеть взглянуть на вывод файла:

runejuhl@lapaz:~/opt/maple/maple15/bin.X86_64_LINUX$ file cmaple 
cmaple: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.4, stripped
runejuhl@lapaz:~/opt/maple/maple15/bin.X86_64_LINUX$ file lmutilv95 
lmutilv95: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.0.0, stripped

От вывода выше, очевидно, что бывший исполняемый файл создается для 64-разрядной системы, в то время как последний создается для x86 системы.

1
15.04.2013, 18:30
2 ответа

Вы могли сделать:

printvars() (
  eval 'declare() { printf declare; printf " %q" "$@"; echo; }'"
        $(declare -p)"
)

printvars

Это могло быть легко расширено для исключения переменных только для чтения как:

printvars() (
  eval 'declare() {
          [[ $1 = *r* ]] && return
          printf declare; printf " %q" "$@"; echo
        }'"
        $(declare -p)"
)
3
27.01.2020, 23:17
  • 1
    , Переопределяют declare в подоболочке для печати ее собственного вывода.Мило! –  l0b0 16.04.2013, 11:59
escaped_env() {
    cat /proc/self/environ | while IFS== read -r -d '' name value
    do
        printf '%s=%q\n' "$name" "$value"
    done
}

Сессия в качестве примера:

$ export foo=$'a\nbar=\baz'
$ escaped_env | grep foo
foo=$'a\nbar=\baz'

Это работает, но только для exportпеременные редактора, и set кажется, не имеет ␀ - опция разделителя.

К вашему сведению/proc файловая система не является функцией POSIX.1-2008, и она похожа только на реализации Linux /proc/self/environ. Если Ваша ОС не имеет этого файла, можно хотеть использовать env --null перед каналом.

2
27.01.2020, 23:17
  • 1
    Если Ваш env не поддерживает --null но Вы находитесь на Linux, можно использовать cat /proc/self/environ вместо этого. –  Stéphane Chazelas 15.04.2013, 23:55
  • 2
    Это похоже /proc/self/environ не обновляется при экспорте большего количества переменных. –  l0b0 16.04.2013, 11:37
  • 3
    Следовательно использование cat (который в этом случае не является UUOC) передать, который обновил среду вдоль выполнения новой команды. –  Stéphane Chazelas 16.04.2013, 11:54

Теги

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