2016-12-05 3 views
1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/my/lib 

ошибки:

Bad : modifier in $ (/) 

эхо $ SHELL

/bin/tcsh 

Я хочу, чтобы добавить свою библиотеку в переменную LD_LIBRARY_PATH. Но дает указанную выше ошибку.

+1

Тогда вам, вероятно, следует использовать синтаксис tcsh. –

+0

Как я могу использовать его @ IgnacioVazquez-Abrams –

ответ

2

Как Ignacio Vazquez-Abrams, указал, что вам нужно set environment variable в tcsh синтаксисе, как

setenv LD_LIBRARY_PATH ${LD_LIBRARY_PATH}:"/home/my/lib" 
+0

Чтобы уточнить, что здесь происходит, tcsh разрешает «переменные модификаторы» в форме '$ varname: modifier', поэтому, если за вашим именем переменной следует': text' вам нужно использовать синтаксис '$ {..}', чтобы сделать более понятным, что ': text' не является частью модификатора переменной. – Carpetsmoker

2
# 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. 

В двойных кавычках, однако, значение передается команде как одно слово.

Смежные вопросы