Как я могу импортировать новые команды Unix в мой терминал OS X?

Кажется, что необходимо экспортировать переменную для него, чтобы быть видимыми к go env:

export GOPATH="$HOME/.go"

должен работать.

2
21.05.2015, 19:24
2 ответа

Возможно, самое близкое к тому, что вы ищете, это MacPorts (или какая-нибудь другая система управления пакетами, например, Homebrew). Его можно использовать для простой установки программного обеспечения (включая многие программы Unix).

5
27.01.2020, 21:50

Ограничения процесса контролируются с помощью setrlimit (2)

Таким образом, вы можете просмотреть его управление:

RLIMIT _ SIGPENDING (Since Linux 2.6.8)

Задает ограничение на количество сигналов, которые могут быть поставлены в очередь для реального идентификатора пользователя вызывающего процесса. Для проверки этого предела учитываются как стандартные сигналы, так и сигналы реального времени. Однако ограничение применяется только для sigqueue (3); всегда можно использовать kill (2) для постановки в очередь одного экземпляра любого из сигналов, которые еще не поставлены в очередь процесса.

Как правило, вы можете получить самую подробную информацию при просмотре страниц syscalls. C является родным языком UNIX/Linux.

-121--45771-

У меня есть экспериментальный обходной путь.

Сначала получить имя приемника адаптера

Сначала необходимо выяснить имя приемника для адаптера. Откройте оболочку. Мы предполагаем, что bash и предотвратим любую проблему локализации, переключившись на языковой стандарт по умолчанию:

export LC_ALL=C 

Чтобы получить список раковин:

pacmd list-sinks | grep name:

Можно прочитать выходные данные и скопировать-вставить имя вручную в командную строку: ADAPTER _ SINK _ NAME = name _ in _ your _ setup

ADAPTER_SINK_NAME=$( pacmd list-sinks | sed -n 's/^.*name: <\([^>]*\.usb[^>]*\)>$/\1/p' | head -n 1 )
echo $ADAPTER_SINK_NAME

Альтернатива с помощью pactl (но запустите строку export выше, или она не найдет ничего в нестандартных языках):

ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\.usb.*\)$/\1/p' | head -n 1 ) 
echo $ADAPTER_SINK_NAME

Получите частичное исправление (1) (2) (3)

Теперь это обеспечит точки (1) (2) (3) вопроса:

pactl set-default-sink $ADAPTER_SINK_NAME

Интересно, что я впервые использовал pacmd ( pacmd вместо pactl ), который обеспечивал (2) и (3), но не всегда (1).

Получите полное исправление (1) - (4)

Оно основано на Можно ли использовать PulseAudio для воспроизведения музыки на двух звуковых картах одновременно? хотя принцип заключается в том, чтобы играть на «одной звуковой карте одновременно».; -)

pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume

Теперь все работает так, как требуется в вопросе.

Очистка.

Если выполнить команды выше несколько раз, будет несколько комбинированных раковин, и будет использоваться первый, а не последний. Если по какой-либо причине вы хотите начать заново, сначала запустите это для очистки комбинированного раковины:

pacmd unload-module module-combine

Не используйте очистку сейчас, если вы хотите продолжить

Бонус: переместить текущие воспроизводимые потоки на адаптер

Команда выше работает для новых потоков, а не тех, которые уже играют. Это позволит скорректировать необходимое:

for SINK_ID in $(pactl list sink-inputs | sed -n 's/^Sink Input #\([0-9]*\)$/\1/p')
do
    echo Sink $SINK_ID
    pactl move-sink-input $SINK_ID $ADAPTER_SINK_NAME
    pactl move-sink-input $SINK_ID adapter-soft-volume
done

Будет предпринята попытка переместить все входы приемника, включая объединенный, который может вызвать круговой путь. К счастью, pulseaudio поступит правильно и напечатает Failure: Invalid argument один раз, чтобы указать на это.

Автоматизация

Вот сценарий, предоставляющий преимущества (1) - (4). Вы можете добавить move-sink-input сверху. Может быть интересно запускать его каждый раз, когда адаптер подключен.

#!/bin/bash

export LC_ALL=C

ADAPTER_SINK_NAME=$( pacmd list-sinks | sed -n 's/^.*name: <\([^>]*\.usb[^>]*\)>$/\1/p' | head -n 1 )

if [[ -z "${ADAPTER_SINK_NAME:-}" ]]
then
    ADAPTER_SINK_NAME=$( pactl list sinks | sed -n 's/^.*Name: \(.*\.usb.*\)$/\1/p' | head -n 1 ) 
fi

echo will plug on $ADAPTER_SINK_NAME

# partial fix, can be run anyway to provide partial benefit if later steps fail
pactl set-default-sink $ADAPTER_SINK_NAME

pacmd unload-module module-combine # not useful first, used to clean things up if run several times

pacmd load-module module-combine sink_name=adapter-soft-volume slaves=$ADAPTER_SINK_NAME
pactl set-default-sink adapter-soft-volume
-121--125533-

webster не является общей командой среди Unix-систем.Он не является частью apt-репозитория Debian и также не является частью двух основных инструментов упаковки Homebrew и MacPorts . Вероятно, он доступен только на компьютерах Стэнфорда.

Однако с помощью одной из двух команд можно легко установить дополнительные команды. Я бы предложил использовать Homebrew, так как многие пакеты предварительно скомпилированы и экономят много времени во время установки.

Вот пример установки homebrew и одной из команд, с которыми вы связывались (lynx).

# Install homebrew
> ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
… 

# Just search for the command you want. The package containing it, will show up
> brew search lynx
lynx

# Then install it
> brew install lynx
4
27.01.2020, 21:50

Теги

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