как получить csh сценарий в ударе для установки [закрытой] среды

18
задан Cœur 4 March 2017 в 09:51
поделиться

4 ответа

В вашем ~ / .bashrc (или в первом из ~ / .bash_profile , ~ /.bash_login и ~ / .profile , который существует) исходят из этого сценария, используя что-то вроде . ~ / bin / sourcecsh :

#!/bin/bash
# This should be sourced rather than executed
while read cmd var val
do
    if [[ $cmd == "setenv" ]]
    then
        eval "export $var=$val"
    fi
done < ~/.cshrc

Эта версия устраняет злой eval :

#!/bin/bash
# This should be sourced rather than executed
# yes, it will be sourcing within sourcing - what so(u)rcery!
source /dev/stdin < \
<(
    while read cmd var val
    do
        if [[ $cmd == "setenv" ]]
        then
             echo "export $var=$val"
        fi
    done < cshrc
)

Редактировать:

Без исходного ввода stdin:

while read cmd var val
do
    if [[ $cmd == "setenv" ]]
    then
        declare -x "$var=$val"
    fi
done < cshrc
17
ответ дан 30 November 2019 в 08:43
поделиться

Поиск файла csh в bash не работает.Вы можете изменить оболочку входа по умолчанию с csh на bash, если вам удобнее работать с bash. Вы можете использовать chsh или как администратор, чтобы изменить его за вас.

chsh -s /usr/local/bin/bash 
-4
ответ дан 30 November 2019 в 08:43
поделиться

Единственный способ, который я могу придумать, - это загрузить csh, а затем вызвать bash из этой новой оболочки. Таким образом csh сможет проанализировать этот файл, а затем созданный им bash унаследует эту среду.

1
ответ дан 30 November 2019 в 08:43
поделиться

В вашем bash .profile вы можете сделать следующее:

cat .cshrc | sed 's/setenv\s+(\S+)\s+(.*)$/set $1=$2; export $1/' > $HOME/.env_from_csh
source $HOME/.env_from_csh
2
ответ дан 30 November 2019 в 08:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: