홈>
빠른 Mac OS 용 콘솔 앱을 개발 중이며 bash 명령을 호출 할 때 사용자 환경 변수에 액세스하려고합니다. 다음 코드를 사용하여 bash 명령을 신속하게 실행합니다.
@discardableResult
func shell(_ command: String) -> String? {
let task = Process()
task.launchPath = "/usr/bin/env"
task.arguments = ["bash", "-c", command]
let pipe = Pipe()
task.standardOutput = pipe
task.launch()
let data = pipe.fileHandleForReading.readDataToEndOfFile()
let output = String(data: data, encoding: String.Encoding.utf8)
return output
}
/usr/bin/env
를 실행할 때
내 터미널에서 원하는 변수를 볼 수 있지만
shell("/usr/bin/env")
를 실행할 때
코드에서 하나를 볼 수 없습니다.
ProcessInfo.processInfo.environment["MY_ENV_VAR"]
또한 필요한 변수를 보여주지 않습니다.
신속한 사용자 정의 환경 변수에 액세스하는 방법은 무엇입니까?
- 답변 # 1
- 답변 # 2
ProcessInfo.processInfo.environment
앱을 실행하는 사용자에게 환경 변수를 제공하지만 Xcode는 사용자의 권한과 환경으로 앱을 실행하지 않습니다.
테스트 단계에서 아래 사진과 같이 Xcode에서 필요한 변수를 정의 할 수 있습니다
확실하게하려면 다음 코드를 파일에 작성하십시오 (예 : "main.swift") :
import Foundation print(ProcessInfo.processInfo.environment)
그리고 쉘에서
swiftc main.swift
를 실행하십시오. 그런 다음./main
사용 변수가 표시됩니다그러나C기능
그것은getenv
를 사용할 수 있습니다UnsafePoiter<Int8>
를 가지고 이것이 필요한 키입니다 (예 : "HOME") : a cchar *
와이즈 비즈의 귀환 : 가치
UnsafeMutablePointer<Int8>!
관련 자료
- javascript - 변수의 사용자 지정 속성 값에 액세스하려면 어떻게해야합니까?
- Python은 Cron을 통해 실행될 때 환경 변수에 액세스 할 수 없습니다
- JSRender 루프에서 동적 변수를 설정하고 액세스 할 수 없습니다
- xcode - Swift 프로젝트에서 뷰 컨트롤러의 델리게이트 속성에 액세스 할 수없는 이유
- autohotkey - Windows 환경 변수의 값을 보내는 방법은 무엇입니까?
- python - AWS Elastic Beanstalk 환경 변수에 액세스하는 방법
- 환경 변수에 terraform 출력 할당
- javascript - 브라우저 확장 컨텍스트에서 TypeScript를 통해 전역 변수에 액세스하는 방법 (가능한 경우 부분적으로 입력)
- sap - 서브 루틴에서 섀도우 변수에 액세스 하시겠습니까?
- python - venv에서 pipenv 환경 변수 설정
- arrays - React Native에서 변수로 설정된 다른 내부의 객체에 액세스
- python - 중첩 배열 내의 변수에 어떻게 액세스 할 수 있습니까?
- Set Environment variable based on trigger branch - 트리거 분기를 기반으로 환경 변수 설정 - azure devops 파이프 라인
- powershell - SYSTEM 환경 변수가 있는지 확인하는 방법?
- javascript - 다른 함수 (글로벌 범위에서 정의)에서 변수 (배열)에 액세스 할 수 없습니다
- firebase - 환경 변수 설정은 "-bash - !": 이벤트를 찾을 수 없습니다 "로 끝납니다
- 연결된 모든 TCP 클라이언트에서 변수에 액세스하는 방법은 무엇입니까?
- 개인 함수가 Javascript 객체 내의 멤버 변수에 액세스 할 수없는 이유는 무엇입니까?
- node.js - chromium - nvm은"npm_config_prefix"환경 변수와 호환되지 않습니다
- 왜 OS에서 환경 변수가 제거 되었습니까?
관련 질문
- ios : swiftui에서 UserDefaults로 저장된 환경 변수를 사용하여 http 연결을 어떻게 생성합니까?
- ios : Swift에서 문자열에서 20 % 또는 $ 20를 추출하는 방법은 무엇입니까? [복제]
- swift - macOS 장치의 현지화 된 언어를 결정 하시겠습니까?
- ios - 폴더에 패키지 내용 표시 추가
- SwiftUI macOS 앱이 포커스에 대한 사이드 바 높이를 변경합니까?
- swift - 포함 된 RTF 파일 열기와 관련된 Mac Sandbox 문제
- MTLTexture (Swift, macOS)에서 CGImage를 만들 때 메모리 누수
- ios - 함수에서 매개 변수로 사용될 때 신속한 클로저를 기본값으로 설정할 수 있습니까?
- swift - M1과 Intel MacBook Pro 사이의 macOS 앱에서 다른 메모리 사용량
- swift : 10.13 및 10.14+에서 NSAttributedString 그리기 위치가 다릅니다.
최근에 비슷한 문제로 어려움을 겪고 있습니다. 완벽한 솔루션은 없지만 몇 가지 제안이 있습니다.
먼저, 정확히
MY_ENV_VAR
의 위치가 중요합니다 정의되었습니다. 그것이.bashrc
안에 있다면 파일,-i
를 사용하여 대화식 모드에서 bash를 시작해야합니다. 해당 파일을 읽습니다..bash_profile
에 정의 된 경우-l
를 사용해야합니다. 이른바 로그인 쉘을 시작합니다.내 경우에는둘 다
-i
를 사용해야합니다 그리고-l
내가 따르는 env vars를 보려면 사용자가 bash를 사용하지 않으면이 모든 것이 훨씬 복잡해집니다. 예를 들어 물고기를 사용하므로bash
에 관계없이 필수 ENV 변수가 bash에 전혀 보이지 않습니다. 호출.그래서 실제로하는 일은먼저사용중인 쉘을 결정한 다음
-i -l -c
를 사용하여 해당 쉘을 호출하는 것입니다. . zsh, bash 및 fish는 모두 이러한 옵션을 지원합니다.실제로 고통스럽고, 방법이 신뢰할 만한지조차 확실하지 않습니다. 그러나 여러 다른 사용자 환경에서 나를 위해 노력하고 있습니다.