Ruby로 환경 경로 정리하기

5846 단어 envruby
Repost from my blog

소프트웨어를 더 많이 설치하고 제거할수록 환경 경로가 더러워집니다.
바로 지금, 내 환경 경로가 더럽고 더럽다는 것을 알았을 때 내 환경 경로 내에서 죽은 경로 링크를 발견했다는 의미에서 발견했습니다. 그래서 청소를 하기로 했습니다.

환경변수란?



An environment variable is a dynamic-named value that can affect the way running processes will behave on a computer. They are part of the environment in which a process runs. For example, a running process can query the value of the TEMP environment variable to discover a suitable location to store temporary files, or the HOME or USERPROFILE variable to find the directory structure owned by the user running the process



추가 설명을 위해 단순 환경 변수에는 프로세스가 작동하는 데 도움이 되는 값이 포함되어 있습니다. 예를 들어, 소프트웨어가 설치된 디렉토리를 찾으려면 PROGRAMFILES 디렉토리에 대한 경로가 포함된 Program Files 환경 변수를 참조하거나 운영 체제의 임시 디렉토리를 찾으려면 TEMP 시스템의 임시 디렉토리에 대한 경로를 포함하는 변수. 환경 변수는 컴퓨터의 사용자 이름이나 프로세서 유형과 같은 기타 정보도 저장할 수 있습니다.

경로 환경 변수



따라서 경로 환경 변수는 사용 가능한 많은 환경 변수 중 하나이며 시스템에서 명령줄에서 필요한 실행 파일을 찾는 데 사용합니다. 따라서 기본적으로 dir 또는 move 또는 time 와 같은 명령을 입력할 때 터미널은 환경 변수 경로의 경로를 검색하여 필요한 실행 파일을 찾지 못하면 찾습니다. 그것은 오류를 반환합니다.

어떻게 더러워지나요?



실행 가능한 CLI와 함께 제공되는 소프트웨어를 설치할 때마다 해당 경로가 환경 변수 경로에 추가되어 어디에서든 실행 파일에 액세스할 수 있지만 애플리케이션을 제거할 때 추가된 경로는 환경 변수이므로 소프트웨어를 설치하고 제거하면 죽은 경로 덩어리로 끝납니다. 이것은 컴퓨터에 전혀 영향을 미치지 않습니다. 모든 것을 깨끗하게 유지하고 시스템이 죽은 파일 경로를 찾지 않도록 하는 것이 좋습니다.

청소하고...



환경 경로 변수의 모든 경로를 반복하고 죽은 링크를 제거하는 간단한 루비 스크립트를 만들 것입니다.
루비에서 모든 환경 변수는 ENV 라는 단일 객체에서 사용할 수 있습니다.
루비의 모든 환경 변수를 보려면 아래 코드를 사용하십시오.

require "pp" #Imports the pretty-print module
pp ENV # pretty prints the env object to stdout


그러면 환경 변수와 해당 값이 인쇄됩니다 ⬆️
실제 코드는 아래와 같습니다.

require "win32/registry"

paths = ENV['path'] #Access the path variable and assign to the value 'paths'
paths = paths.split(";") #We split the value by ';' to get the individual paths

valid = Array.new #We create a new array in which we will store the valid paths
valid_string = "" #This will contain the strinfied form of the valid paths

paths.each do |x|
  valid.push(x) if Dir.exists? x #We iterate through the paths and append the path to the valid array if it exists
end

valid.each do |x| #We then iterate through the valid array and stringify it
  valid_string += "#{x};"
end

Win32::Registry::HKEY_CURRENT_USER.open('Environment',Win32::Registry::KEY_WRITE) do |reg| #We open the environment in the registry and assign our new value
  reg['path'] = valid_string
end


이것이 바로 코드입니다.
먼저 '레지스트리' 모듈을 가져왔습니다. 그런 다음 환경 변수ENV['path']paths라는 변수에 할당했습니다. 이것은 문자열을 반환합니다.
그런 다음 ';'으로 나눕니다. 변수의 모든 경로가 ';'로 연결 및 분리되기 때문입니다. 그러면 paths 변수가 배열로 바뀝니다.
그런 다음 valid라는 새 배열을 만들었습니다(유효한 경로를 저장할 배열입니다).valid_string 변수는 유효한 배열의 문자열화된 버전도 보유합니다.
그런 다음 반복에 대해 paths 배열의 각 항목을 반복한 다음 Dir.exists?를 사용하여 경로가 존재하는지 확인하고 존재하는 경우 유효한 배열에 추가합니다.
그런 다음 유효한 배열을 반복하고 각 항목 + ';'를 추가합니다. valid_string 변수에.

다음 부분에서는 레지스트리를 열고 환경에 액세스한 다음 새 환경 변수를 할당합니다.

주의: 변경 사항을 보려면 컴퓨터를 다시 시작해야 합니다.

좋은 웹페이지 즐겨찾기