получение файла внутри скрипта

получение файла внутри скрипта

Я хотел бы получить файл внутри скрипта tcsh. В коде:

#!/bin/tcsh

unsetenv LD_LIBRARY_PATH
source $1    
echo $LD_LIBRARY_PATH > temp_file

Ожидаемый результат:Переменная среды, установленная скриптом с помощью команды source, будет выведена во временный файл.

Фактический результат:Исходный файл работает нормально, но LD_LIBRARY_PATHпеременная остается пустой.

Есть идеи, как это реализовать?


ПС tcshКонечно, это не мой любимый shell, но у меня на работе есть скрипт, который устанавливает множество переменных окружения, в tcshкоторых я хочу, чтобы они работали bash. Я решил, что самый простой способ (кроме переписывания tcshshell каждый раз) — это создать его источник, вывести переменные в файл и, применив немного магии shell, переместить все обратно в bash.

решение1

Я пробовал с csh на OpenBSD. Думаю, мой пример работает и с tcsh.

Файл test.csh:

#!/bin/csh
source data.csh
echo $VARIABLE

Файл data.csh

#!/bin/csh
setenv VARIABLE 1234

Результат:

$ csh test.csh
1234

решение2

Для справки, это действительно работает, но не следует использовать шебанг для пути tcsh:

 #!/bin/tcsh 

а лучше используйте путь к 'env':

 #!/usr/bin/env tcsh

для обеспечения гибкости в системах с tcsh, установленным в разных путях. Например, если 'tcsh' установлен в '/usr/bin/tcsh', то первый вариант не будет работать, а последний все равно будет работать.

Связанный контент