export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/my/lib
ошибки:
Bad : modifier in $ (/)
эхо $ SHELL
/bin/tcsh
Я хочу, чтобы добавить свою библиотеку в переменную LD_LIBRARY_PATH. Но дает указанную выше ошибку.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/my/lib
ошибки:
Bad : modifier in $ (/)
эхо $ SHELL
/bin/tcsh
Я хочу, чтобы добавить свою библиотеку в переменную LD_LIBRARY_PATH. Но дает указанную выше ошибку.
Как Ignacio Vazquez-Abrams, указал, что вам нужно set environment variable в tcsh
синтаксисе, как
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:"/home/my/lib"
Чтобы уточнить, что здесь происходит, tcsh разрешает «переменные модификаторы» в форме '$ varname: modifier', поэтому, если за вашим именем переменной следует': text' вам нужно использовать синтаксис '$ {..}', чтобы сделать более понятным, что ': text' не является частью модификатора переменной. – Carpetsmoker
# Assign empty string to LD_LIBRARY_PATH, if the variable is undefined
[ ${?LD_LIBRARY_PATH} -eq 0 ] && setenv LD_LIBRARY_PATH ""
setenv LD_LIBRARY_PATH "${LD_LIBRARY_PATH}:/home/my/lib"
Проверяется переменная определена
Если переменная не была ранее определена, просто setenv LD_LIBRARY_PATH value
команда завершится с ошибкой, например LD_LIBRARY_PATH: Undefined variable.
. Чтобы этого избежать, проверьте значение ${?LD_LIBRARY_PATH}
(substitutes строка 1
, если имя установлено, 0
, если это не так) и установите значение по умолчанию, как показано выше.
Использование двойных кавычек
отметить также использование двойных кавычек. Предположим, что переменная содержит пробелы, например:
setenv LD_LIBRARY_PATH "/home/user with spaces/lib"
Затем команда без кавычек:
setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:/home/my/lib
потерпит неудачу со следующей ошибкой:
setenv: Too many arguments.
В двойных кавычках, однако, значение передается команде как одно слово.
Тогда вам, вероятно, следует использовать синтаксис tcsh. –
Как я могу использовать его @ IgnacioVazquez-Abrams –