Я устанавливаю какое-то программное обеспечение с открытым исходным кодом, компилируя его исходный код - на Ubuntu 16.04 - следуя инструкциям в файле 'readme'. В определенный момент (точка 3b в ссылке) для руководства требуется, чтобы я запускал файл .csh, расположенный в определенном каталоге, чтобы генерировать исполняемые файлы. Когда я выполняю требуемый скрипт csh из терминала в требуемом каталоге, набрав ./compile_all.csh или запустив csh, чтобы запустить интерактивную оболочку, меня встречает следующая строка на терминале:
MANPATH: undefined variable.
Ниже приведен результат команды manpath при выполнении с терминала Ubuntu:
~$ manpath
/home/atrcheema/share/man:/usr/local/man:/usr/local/share/man:/usr/share/man
~./cshrc файл содержит только одну строку, как видно из выполнения следующей команды:
:/home$ vim ~/.cshrc
setenv MANPATH ${MANPATH}:${HOME}/share/man
Первые несколько строк из compile_all.csh выглядят следующим образом:
#!/bin/csh
####### section added by York Prado 10/2009
if( ! (-e /usr/bin/f77 || -e /bin/f77 || -e /usr/local/bin/f77) ) then
echo "f77 command is not found"
echo "Please make sure you have the fortran 77 compiler installed"
exit 1
endif
# section below moved to compile_hspf_libs.csh
#cd hspf/lib3.2/src/util
#make clean
#make
#make install
#cd ../
#cd wdm/
#make clean
#make
#make install
#cd ../
#cd adwdm/
#make clean
##make
#make install
#echo "Compiled all the lib3.2 files needed to compile the CBWM"
#cd ../../../../
######### end York Prado section
cd lib/dsn/
f77 -c dsn_utils.f
cd ../util
rm ../util_lib.a
./compile
cd ../get
rm ../get_lib.a
./compile
cd ../tty/
gcc -c -o ../ttyux.o ttyux.c
Сообщение об ошибке
MANPATH: undefined variable.
связано с тем, что Ubuntu не устанавливает MANPATH по умолчанию (man имеет встроенный путь поиска) и csh (в отличие от оболочек Борна) doesn 'обрабатывать неустановленные переменные пустыми.
Однако он не должен сам по себе препятствовать запуску оболочки или любого скрипта C-shell.
Тем не менее, если вы хотите «исправить» его, вам нужно будет изменить свой [ f6], чтобы проверить, установлен ли MANPATH или нет, и обрабатывать два случая соответственно - что-то вроде
if ( ${?MANPATH} ) then
setenv MANPATH ${MANPATH}:${HOME}/share/man
else
setenv MANPATH ${HOME}/share/man
endif
Однако он сам по себе не должен препятствовать оболочке ИЛИ любому скрипту C-оболочки от запуска. Я не говорю о синтаксисе csh, поэтому YMMV.
Сообщение об ошибке
MANPATH: undefined variable.
связано с тем, что Ubuntu не устанавливает MANPATH по умолчанию (man имеет встроенный путь поиска) и csh (в отличие от оболочек Борна) doesn 'обрабатывать неустановленные переменные пустыми.
Однако он не должен сам по себе препятствовать запуску оболочки или любого скрипта C-shell.
Тем не менее, если вы хотите «исправить» его, вам нужно будет изменить свой ~/.cshrc, чтобы проверить, установлен ли MANPATH или нет, и обрабатывать два случая соответственно - что-то вроде
if ( ${?MANPATH} ) then
setenv MANPATH ${MANPATH}:${HOME}/share/man
else
setenv MANPATH ${HOME}/share/man
endif
Однако он сам по себе не должен препятствовать оболочке ИЛИ любому скрипту C-оболочки от запуска. Я не говорю о синтаксисе csh, поэтому YMMV.
Сообщение об ошибке
MANPATH: undefined variable.
связано с тем, что Ubuntu не устанавливает MANPATH по умолчанию (man имеет встроенный путь поиска) и csh (в отличие от оболочек Борна) doesn 'обрабатывать неустановленные переменные пустыми.
Однако он не должен сам по себе препятствовать запуску оболочки или любого скрипта C-shell.
Тем не менее, если вы хотите «исправить» его, вам нужно будет изменить свой ~/.cshrc, чтобы проверить, установлен ли MANPATH или нет, и обрабатывать два случая соответственно - что-то вроде
if ( ${?MANPATH} ) then
setenv MANPATH ${MANPATH}:${HOME}/share/man
else
setenv MANPATH ${HOME}/share/man
endif
Однако он сам по себе не должен препятствовать оболочке ИЛИ любому скрипту C-оболочки от запуска. Я не говорю о синтаксисе csh, поэтому YMMV.
Ваш файл ~/.cshrc содержит (и фактически состоит целиком) команду, целью которой является увеличение списка каталогов, в которых команда man будет искать справочные страницы:
setenv MANPATH ${MANPATH}:${HOME}/share/man
Однако это не совсем правильный способ достичь этого, и это не сработает для вашей ситуации, поскольку переменная среды MANPATH не существует. Вот что выдает сообщение об ошибке.1
Команда manpath, которую вы нашли намерение , работает правильно, делает правильные действия. Он проверяет, существует ли переменная среды MANPATH, и использует ее, если она существует (и непусто). Но если нет такой переменной среды (или она существует, но пустой), manpath обращается к файлу конфигурации /etc/manpath.config, чтобы определить, каков должен быть по умолчанию manpath, и использует это. Когда вы устанавливаете переменную среды MANPATH, записи в этом файле больше не используются автоматически, поэтому вы несете ответственность за то, чтобы они содержали MANPATH, за исключением необычного случая, который вам не нужен. 1
К счастью, это легко сделать, потому что вы можете просто использовать подстановку команд, чтобы включить вывод команды manpath в значение, присвоенное переменной MANPATH. Замените строку ~/.cshrc, которая в настоящее время содержит:
setenv MANPATH "`manpath`:$HOME/share/man"
Backticks (` `) выполняют подстановку команд в csh и tcsh. В оболочках типа Bourne, таких как bash, есть также синтаксис $( ) для подстановки команд, который обычно предпочтительнее обратных шагов, но подстановка команды . Вы не можете использовать синтаксис $( ) с csh / tcsh; они не поддерживают его.
1 Однако, как говорит steeldriver, вы, вероятно, можете продолжить, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить это без этого.
1 Однако, как говорит steeldriver, вы можете вероятно, продолжайте, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить, не делая этого.
Ваш файл ~/.cshrc содержит (и фактически состоит целиком) команду, целью которой является увеличение списка каталогов, в которых команда man будет искать справочные страницы:
setenv MANPATH ${MANPATH}:${HOME}/share/man
Однако это не совсем правильный способ достичь этого, и это не сработает для вашей ситуации, поскольку переменная среды MANPATH не существует. Вот что выдает сообщение об ошибке.1
Команда manpath, которую вы нашли намерение , работает правильно, делает правильные действия. Он проверяет, существует ли переменная среды MANPATH, и использует ее, если она существует (и непусто). Но если нет такой переменной среды (или она существует, но пустой), manpath обращается к файлу конфигурации /etc/manpath.config, чтобы определить, каков должен быть по умолчанию manpath, и использует это. Когда вы устанавливаете переменную среды MANPATH, записи в этом файле больше не используются автоматически, поэтому вы несете ответственность за то, чтобы они содержали MANPATH, за исключением необычного случая, который вам не нужен. [D4] 1
К счастью, это легко сделать, потому что вы можете просто использовать подстановку команд, чтобы включить вывод команды manpath в значение, присвоенное переменной MANPATH. Замените строку ~/.cshrc, которая в настоящее время содержит:
setenv MANPATH "`manpath`:$HOME/share/man"
Backticks (` `) выполняют подстановку команд в csh и tcsh. В оболочках типа Bourne, таких как bash, есть также синтаксис $( ) для подстановки команд, который обычно предпочтительнее обратных шагов, но подстановка команды . Вы не можете использовать синтаксис $( ) с csh / tcsh; они не поддерживают его.
1 Однако, как говорит steeldriver, вы, вероятно, можете продолжить, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить это без этого.
1 Однако, как говорит steeldriver, вы можете вероятно, продолжайте, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить, не делая этого.
Ваш файл ~/.cshrc содержит (и фактически состоит целиком) команду, целью которой является увеличение списка каталогов, в которых команда man будет искать справочные страницы:
setenv MANPATH ${MANPATH}:${HOME}/share/man
Однако это не совсем правильный способ достичь этого, и это не сработает для вашей ситуации, поскольку переменная среды MANPATH не существует. Вот что выдает сообщение об ошибке.1
Команда manpath, которую вы нашли намерение , работает правильно, делает правильные действия. Он проверяет, существует ли переменная среды MANPATH, и использует ее, если она существует (и непусто). Но если нет такой переменной среды (или она существует, но пустой), manpath обращается к файлу конфигурации /etc/manpath.config, чтобы определить, каков должен быть по умолчанию manpath, и использует это. Когда вы устанавливаете переменную среды MANPATH, записи в этом файле больше не используются автоматически, поэтому вы несете ответственность за то, чтобы они содержали MANPATH, за исключением необычного случая, который вам не нужен. [D4] 1
К счастью, это легко сделать, потому что вы можете просто использовать подстановку команд, чтобы включить вывод команды manpath в значение, присвоенное переменной MANPATH. Замените строку ~/.cshrc, которая в настоящее время содержит:
setenv MANPATH "`manpath`:$HOME/share/man"
Backticks (` `) выполняют подстановку команд в csh и tcsh. В оболочках типа Bourne, таких как bash, есть также синтаксис $( ) для подстановки команд, который обычно предпочтительнее обратных шагов, но подстановка команды . Вы не можете использовать синтаксис $( ) с csh / tcsh; они не поддерживают его.
1 Однако, как говорит steeldriver, вы, вероятно, можете продолжить, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить это без этого.
1 Однако, как говорит steeldriver, вы можете вероятно, продолжайте, не исправляя эту проблему. Большинство скриптов не используют команду man, хотя некоторые могут. Даже если ваш скрипт устанавливает программное обеспечение, которое включает в себя страницы руководства, скорее всего, он не будет консультироваться с текущим manpath, чтобы выяснить, куда их поместить. Конечно, если в его документации говорится, что это так, то это заменяет это предположение. Я предлагаю вам исправить эту проблему, но вы, вероятно, можете продолжить, не делая этого.