Как положить аргумент в переменную браузера?

Это обычно делается с помощью тегов LVM (доступны с LVM2). Вот небольшой пример, демонстрирующий их:

Предположим, у вас есть VG под названием "vg01" с 2 LV "lvtest" и "lvother":

[root@centos ~]# lvs vg01
  LV      VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert
  lvother vg01 -wi------- 12.00m
  lvtest  vg01 -wi------- 12.00m

Теперь вы включаете LVM hosttags:

[root@centos ~]# grep ^tags /etc/lvm/lvm.conf
tags { hosttags = 1 }

И устанавливаете фильтр активации на основе имени вашего хоста:

[root@centos ~]# cat /etc/lvm/lvm_centos.conf (centos.conf == hostname.conf)
activation { volume_list=["@centos"] }

Теперь давайте проверим/установим/удалим некоторые теги:

[root@centos ~]# lvs vg01 -o +tags
 LV      VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert LV Tags
 lvother vg01 -wi------- 12.00m
 lvtest  vg01 -wi------- 12.00m

В настоящее время теги не установлены (последний столбец)

Активация тома не сработает:

[root@centos ~]# vgchange -ay /dev/vg01
 Not activating vg01/lvtest since it does not pass activation filter.
 Not activating vg01/lvother since it does not pass activation filter.
 0 logical volume(s) in volume group "vg01" now active

Давайте добавим несколько тегов и попробуем снова

[root@centos ~]# lvchange --addtag @centos /dev/vg01/lvtest
 Logical volume "lvtest" changed.

[root@centos ~]# lvchange --addtag @centos /dev/vg01/lvother
 Logical volume "lvother" changed.

[root@centos ~]# lvs vg01 -o +tags
 LV      VG   Attr       LSize  Pool Origin Data%  Move Log Cpy%Sync Convert LV Tags
 lvother vg01 -wi------- 12.00m                                              centos
 lvtest  vg01 -wi------- 12.00m                                              centos

[root@centos ~]# vgchange -ay /dev/vg01
 2 logical volume(s) in volume group "vg01" now active

Лучше. ;-)

Итак, в вашем случае вам нужно просто установить тег на lv_shared с именем хоста сервера, который должен монтировать LV.

0
23.11.2018, 08:24
2 ответа
Некоторые утилиты считают

$BROWSERпредпочтительным веб-браузером.

В зависимости от утилиты ожидается, что он будет содержать:

  1. путь или имя исполняемого файла
  2. список слов, первое из которых является путем или именем, а остальные — списком начальных аргументов. Если вам повезет, он также поймет некоторую форму цитирования, аналогичную тому, что делают оболочки.
  3. (очень маловероятно, и было бы очень неразумно )запускать командную строку оболочки.

Если бы вы были в первом случае, я бы ожидал, что утилита, в которой вы пытались это сделать, жаловалась на несуществующую команду "lynx -cfg=~/.lynx.cfg".

Обратите внимание, что в третьем случае оболочки не расширяют ~в -cfg=~/.lynx.cfg. zshработает только тогда, когда включена опция magicequalsubst. bashтолько расширяет ~после =, если то, что слева от =, выглядит как допустимое имя переменной и не в режиме POSIX.

Однакоlynx(по крайней мере версия 2.8.9dev.16 в моей системе ), по-видимому, понимает ~как самостоятельный домашний каталог, поэтому я ожидаю, что ваш будет работать для утилит во втором и третья категория.

$ BROWSER='echo -cfg=~' sensible-browser foo
-cfg=~ foo

Таким образом, либо ваш браузер относится к четвертой категории, которая игнорирует все, кроме первого слова, либо принимает только подсказку о том, какой у вас браузер; или ваша версия lynxне понимает ~как дома.

Запустите утилиту под именем strace -fe execve the-utility, чтобы посмотреть, что она пытается выполнить.

Если ваши версии lynxне считают ~домом, вы можете определить $BROWSERкак:

export BROWSER="lynx -cfg=$HOME/.lynx.cfg"

(предполагается, что $HOMEне содержит пробелов или кавычек (или других символов, характерных для оболочки))

В любом случае вы должны иметь возможность определить $BROWSERкак сценарий, который передает правильные параметры в lynx, например:

#! /bin/sh -
exec lynx -cfg="$HOME/.lynx.cfg" "$@"

и используйте его как $BROWSER.

Между прочим, если бы ваш $HOMEначинался с ~символов, это могло бы ввести в заблуждение lynx, поэтому не очень хорошая идея для lynxобрабатывать эти ~самостоятельно.

1
28.01.2020, 02:31

Я не думаю, что вы можете, но вы можете попробовать:

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

export BROWSER='/home/username/lynx.sh'

Создайте новый файл lynx.sh в домашнем каталоге.

#!/bin/bash
linx -cfg=/home/username/.lynx.cfg

Сделать его выполнимым.

Тогда:

Launching Browser should launch lynx.
or
./lynx.sh

И/или:

Тип:

whereis lynx

Используйте на следующем шаге.

Редактировать bash _псевдонимы:

Необходимо использовать абсолютный путь к :lynx.cfg
Необходимо использовать абсолютный путь к :lynx, если он не находится в /usr/bin/

alias=lynx='/path/to/lynx -cfg=/home/username/.lynx.cfg'

Необходимо использовать ' ', если путь содержит специальные символы.

1
28.01.2020, 02:31

Теги

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