если оператор в .bashrc, не работающем правильно

Первый ответ на этот вопрос использует то, что Вы предлагаете, и дескрипторы недостающие пакеты впоследствии. Среди ответов некоторые люди предполагают, что это - плохая идея. Обратите внимание также на это, если выбор добавляет a :i386 это может быть, потому что некоторый другой пакет явно требует пакета для этой архитектуры. Если Вы хотите проверить прежде, вот предложение.

В Вашей системе необходимо найти списки доступных пакетов на репозиторий в /var/lib/apt/lists. Вы могли проверить список пакетов с a: i386 против этих списков, чтобы гарантировать, что они присутствуют и для i386 и для amd64 архитектуры. Следующий сценарий является примером того, что Вы могли сделать

#!/bin/bash

#iterate on installed packages with a :something in their names
for package in $(
                   dpkg --get-selections | 
                   grep ":" | #comment to check all the selection
                   grep -v deinstall | 
                   cut -f1 |
                   sed s/:.*// | 
                   sort -u
                )
do
  #find all occurences in repository package lists
  grep "Package: $package$" /var/lib/apt/lists/*  2>/dev/null |
    #translation and sources are not usefull
    grep -v Translation |
    grep -v Sources |
    #put the distribution as a prefix
    sed 's/^\(.*\)_dists_\([^_]*\)\(.*\)/\2  \1\3/' |
    #put the architecture difference in the repository file name as a prefix
    sed 's/^\(.*\)-\(amd64\|i386\)_\(.*\)/\2  \1_\3/' |
    #count consecutive identical lines ignoring the architecture prefix
    uniq -c -f1 |
    #print architecture distribution and package if some line is not duplicated
    awk '$1!=2{print $2 " " $3 " " $5}'
done

На установке lubuntu это ничего не дает мне, и на debian один, пакеты libc6-i686, libwine-bin, libwine-alsa, libwine-gl только для i386 архитектуры, например,

6
25.06.2014, 02:42
2 ответа

COLUMNS устанавливается bash после получения SIGWINCH. (см. раздел Shell Variables в man bash)). Она не установлена в вашем скрипте, потому что это не переменная окружения. Посмотрите на себя:

$ export COLUMNS=$COLUMNS
$ ./your-script.sh

Теперь это работает. Вам необходимо получить значение COLUMNS в вашем скрипте. Вы можете использовать tput, например:

$ tput cols
186
10
27.01.2020, 20:22

COLUMNS не установлена каким-то образом в .bashrc.

Просто получите колонки через tput cols так:

dp_smaller_than=80
if [ $(tput cols) -lt $dp_smaller_than ]
then
    PROMPT_COMMAND="degr_prompt"
else
    PROMPT_COMMAND="full_prompt"
fi
5
27.01.2020, 20:22

Теги

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