전역 bash의 소스 .bashrc 파일

전역 bash의 소스 .bashrc 파일

그래서 GIT에서 VMAF를 컴파일하는 스크립트를 작성하려고 하는데 PYTHONPATH 위치를 설치 디렉터리로 변경해야 합니다. 스크립트가 제대로 실행되고 VMAF가 설치되고 있지만 문제는 .bashrc를 변경할 때 bash 스크립트가 완료될 때까지 작동하고 전역적으로 변경하고 싶다는 것입니다. Bash 프로세스가 변경 사항을 격리하고 있다는 것을 알고 있지만 스크립트 실행을 유지하기 위해 소스를 실행하는 방법이 있습니까? 이것은 내 코드입니다.

#!/bin/bash

mkdir $HOME/install
sudo apt-get install python-dev python-pip python-tk -y
sudo pip install --upgrade scikit-learn h5py numpy scipy matplotlib pandas

cd $HOME/install
git clone https://github.com/Netflix/vmaf.git
cd $HOME/install/vmaf
make
echo "export PYTHONPATH=$HOME/install/vmaf/python:\$PYTHONPATH" | sudo tee -a $HOME/.bashrc
echo "alias ll='ls -al --color'" | sudo tee -a $HOME/.bashrc

source $HOME/.bashrc
./unittest

답변1

아마도 가장 우아한 해결책은 아니지만 /etc/bash.bashrc에 전역 변수를 정의하고 bash -c unittest.

이런 종류의 작업을 자동화하도록 설계된 Chef 및 Puppet과 같은 무료 오픈 소스 소프트웨어가 있다는 점을 지적하지 않을 수 없습니다. 극복해야 할 학습 곡선이 있지만 둘 다 잘 문서화된 튜토리얼이 있습니다. 나는 Chef를 좋아하고 당신이 여기서 하려는 일을 내가 해야 한다면 그것을 사용할 것입니다.

보세요https://learn.chef.io/tutorials/learn-the-basics/ubuntu/free/configure-a-resource/로컬 모드에서 Chef를 사용하는 방법에 대한 느낌을 얻기 위해 이 상황에서 수행할 작업은 다음과 같습니다. 이것은 여러분이 시작할 수 있도록 제가 작성한 Chef 스크립트입니다. 그러나 사용에 따른 책임은 본인에게 있습니다. 아직 테스트하지 않았습니다. install_vmaf.rb와 같은 파일로 저장합니다.

include_recipe 'python'
include_recipe 'python::pip'

['python-dev','python-pip','python-tk'].each do |p|
  package p do
    action :install
  end
end

['scikit-learn','h5py','numpy','scipy','matplotlib','pandas'].each do |p|
  python_pip p do
    action :install
  end
end

git "/path/to/check/out/to" do
  repository "https://github.com/Netflix/vmaf.git"
  reference "master"
  action :sync
end

이는 불완전하므로 빌드 프로세스를 처리하려면 리소스 블록을 추가해야 합니다. 몇년이 지났는데도 아직도 보고있네요https://serverfault.com/questions/298013/installing-something-from-source-using-chef-should-i-be-doing-some-checks이를 수행하는 방법에 대한 몇 가지 지침.

마지막으로 chef-client루트로 실행해야 하므로 "git" 리소스 블록의 "user" 속성을 사용하여 복제된 vmaf 저장소의 소유권을 올바르게 설정해야 합니다. 바라보다https://docs.chef.io/resource_git.html더 많은 정보를 알고 싶습니다.

관련 정보