Используйте отдельные цитаты:
[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
Решение:
Я установил все эти 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, считающемся вредным ранцем.)
Попробуйте:
./foo\\\my\\share\\is\\here
Или:
./foo\\my\\share\\is\\here
Зависит от того, хотите ли вы двойное '\' в начале или нет.
Если вы хотите запустить команду ./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\' "здесь""
или любой другой вариант).