Аргумент UNC в ударе scipt

[119281] Я рекомендую установить каталог в каталоге /home, в который вы поместите все, что вы хотите разделить между различными средами. Например, мой называется [119741]/home/avdndata[119742] и у меня есть ссылки из моих настоящих домашних каталогов (для различных дистрибутивов) на подкаталоги [119743]/home/avdndata[119744]. Это позволяет мне открыто делиться тем, что, как я знаю, работает, и в то же время не делиться другими конфигурациями, которые имеют несовместимость. Я предоставляю общий доступ к [119745]/home[119746], но у меня есть разные каталоги для одного и того же пользователя под [119747]/home[119748] для разных дистрибутивов/версий (т.е. для пользователя 'anthon' у меня есть что-то вроде [119749]/home/anthon12[119750] и [119751]/home/anthon14[119752] и т.д.)[12181]Таким образом, у меня есть общий материал, обычно хранимый дома, между SuSE и Ubuntu, а также между различными версиями Ubuntu. Перед установкой новой версии я делаю резервную копию всего, что использовалось старой версией (особенно общего материала). И если после обновления какая-нибудь программа, которая изменяет конфигурационный файл каким-то обратно несовместимым способом (я видел, как .ini файлы заменялись на .xml), вы заметите это, когда запустите старую систему, и она пожалуется. В этот момент вы можете перенести эту конфигурацию из общего каталога, удалить ссылку и восстановить соответствующие файлы из вашей резервной копии в старой версии.[12182](Конечно, вся эта штука с линковкой и разблокировкой автоматизирована некоторыми скриптами).[119286].
1
16.01.2015, 00:46
3 ответа

Используйте отдельные цитаты:

[root@xxx601 ~]# ./stack \\my\share\is\here
You Gave Me: \myshareishere
[root@xxx601 ~]# ./stack '\\my\share\is\here'
You Gave Me: \\my\share\is\here
3
27.01.2020, 23:13

Решение:

Я установил все эти 32-битные пакеты:

yum -y install glibc.i686  libstdc++.i686 libXrender-0.9.8-2.1.el7.i686 alsa-lib-1.0.27.2-3.el7.i686 dbus-glib-0.100-7.el7.i686 gtk2.i686 libXt-1.1.4-6.1.el7.i686

Я изменил пакет gtk2-2.24.22-5.el7.i686 на gtk2.i686, чтобы не получить эту ошибку конфликтующих lib.

Ответ Кристиана Бока: Я думаю, что это может решить и вопрос установки thunderbird 31.4 на CentOS7, но только эти пакеты здесь необходимы для запуска thunderbird.

Комментарий Кристиана Бока; также помогает решить эту проблему, увидев, какой пакет предоставляет библиотека:

yum whatprovides libraryName 
-121--202651-

Я задаю $ MYSHELL для будущих тестов в моей оболочке-агностике ~/.aliases :

unset MYSHELL
if [ -n "$ZSH_VERSION" ] && type zstyle >/dev/null 2>&1; then        # zsh
  MYSHELL=`command -v zsh`
elif [ -x "$BASH" ] && shopt -q >/dev/null 2>&1; then                # bash
  MYSHELL=`command -v bash`
elif [ -x "$shell" ] && which setenv |grep builtin >/dev/null; then  # tcsh
  echo "DANGER: this script is likely not compatible with C shells!"
  sleep 5
  setenv MYSHELL "$shell"
fi

# verify
if [ ! -x "$MYSHELL" ]; then
  MYSHELL=`command -v "$(ps $$ |awk 'NR == 2 { print $NF }')"`
  [ -x "$MYSHELL" ] || MYSHELL="${SHELL:-/bin/sh}"  # default if verify fails
fi

Раздел tcsh , вероятно, не подходит для развертывания в POSIX-стиле (Для одного из них оболочки csh -стиля не могут выполнять 2 >/dev/null или > & 2 , как отмечено в известном программировании Csh, считающемся вредным ранцем.)

-121--5908-

Попробуйте: ./foo\\\my\\share\\is\\here

Или: ./foo\\my\\share\\is\\here

Зависит от того, хотите ли вы двойное '\' в начале или нет.

2
27.01.2020, 23:13

Если вы хотите запустить команду ./foo с аргументом \\my\share\is\here в сценарии оболочки, то вам нужно использовать некую форму цитирования, потому что символ обратного слеша имеет особое значение для оболочки. Самая простая форма кавычек - это помещение одинарных кавычек вокруг аргумента: все между парой одинарных кавычек рассматривается буквально, единственный символ, который вы не можете включить таким образом - это сам символ одинарной кавычки.

./foo '\\my\share\is\here'

Если ваш сценарий foo и вы хотите запустить его с аргументом \\my\share\is\here в командной строке, то там тоже нужно использовать кавычки (командная строка - оболочка).

Если вы набираете ./foo \\my\share\is\here, то foo не имеет возможности узнать, что вы набрали. Это оболочка, которая запускает foo, которая разбирает командную строку и решает, что пробел после ./foo является разделителем слов, и что первое слово является именем команды для выполнения, а второе слово - аргументом, и что символьные последовательности формы обратный слеш+что-то означает для символа что-то. Это такое же явление, как если бы вы написали foo ; bar: это команда оболочки для выполнения foo, затем bar; она не передает строку ; bar на foo. Аналогично ./foo \\my\share\is\here выполняет ./foo с аргументом \myshareishere. Если вы хотите запустить ./foo с аргументом \\my\share\is\here, вам нужно написать то, что вы имеете в виду, например . /foo '\\my\share\is\here' (или ./foo \\\\my\\share\\is\\here или ./foo '\' "\\m "y\\share'\is\' "здесь"" или любой другой вариант).

2
27.01.2020, 23:13

Теги

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