Как создать псевдонимы с «перекрывающимися» именами для существующих команд? [дубликат]

Допустим, я хочу создать псевдоним ss для команды sudo -s . Но ss уже является существующей командой, поэтому я хочу создать другой псевдоним с именем sst для команды ss .

Если используются только обычные имена команд, это невозможно, поскольку псевдонимы:

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

Итак если я попробую следующее:

alias sst='ss'
alias ss='sudo -s'

Выполнение команды sst приведет к запуску sudo -s , что не является моим намерением.

Как это можно сделать?

1
задан 26 February 2021 в 18:54

1 ответ

Если вы используете оснастку VLC, вероятно, именно поэтому. Для доступа к файлам в домашней папке используется интерфейс home . Он также может использовать интерфейс съемных носителей (см. snap connections vlc ) для чтения данных на съемных устройствах, таких как USB-ключи и смонтированные тома.

Итак, то, что происходит, так это то, что изолированные функции безопасности snap блокируют это. Обходной путь заключается в использовании «bind mounts» вместо symlinks. Таким образом, вы можете, например, sudo mount -o bind/meda/bigdisk/home/Videos/bigdisk , и VLC должен иметь возможность видеть это.

-121--909486-

Я нашел проблему. Ранее я установил 2-портовый переключатель ATEN USB kvm для клавиатуры/мыши. Его удаление решает проблему.

-121--909551-

Для выполнения вышеуказанных действий необходимо указать абсолютный путь выполнения команды.

Это можно сделать следующим образом:

alias sst='/usr/bin/ss'
alias ss='sudo -s

Однако не всегда можно быть уверенным, что ss находится в этом месте, поэтому более прочный подход будет:

alias sst='$(which ss)'
alias ss='sudo -s

Теперь выше работает, как и ожидалось, где ss запускает sudo-s и sst выполняет команду ss .

1
ответ дан 18 March 2021 в 23:30

Другие вопросы по тегам:

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