나는 다음을 가지고 있습니다지위 권리:
set -g status-right "#{prefix_highlight}[wifi:#[fg=brightred]#(wifi_status)#[fg=yellow]|#[fg=brightgreen]#{cpu_icon}#[fg=yellow]:#{cpu_percentage}|#{battery_icon}:#{battery_percentage}:#{battery_remain}] %a %h-%d %H:%M:%S#[default]"
그리고 그 안에 있는 사용자 정의 쉘 명령무선 네트워크 상태.
함수를 실행합니다(무선 네트워크 품질) Wi-Fi 상태를 확인한 다음 다음을 사용하세요.불꽃.
wifi_status
이것은 파일이 있을 때 작동했지만 /usr/local/bin
내 도트 파일의 버전 제어 저장소에 있기를 원했기 때문에 파일을 .zsh
내 폴더의 bin 폴더로 이동하고
$HOME/.zsh/bin
쉘 터미널(tmux에서도)에서 이 명령을 사용했습니다. 그러면 올바른 출력이 표시됩니다.
▁▃▅█
그러나 tmux 상태 표시줄에는 더 이상 표시되지 않습니다.
어떻게 되어가나요?
폴더가 있고 $PATH
구성이 다시 로드되었으며 터미널에서 작동하고 파일이 실행 파일로 설정되었습니다. 이해가 안 되지만 지금은 작동하지 않는 이유는 무엇입니까?
누군가가 질문했기 때문에 :
터미널( ) tmux new
을 입력하여 tmux를 시작합니다 .
내 운영 체제는 OSX입니다.
xterm2를 실행 중입니다.
내 로그인 쉘은 Oh-My-Zsh 프레임워크를 사용하는 ZSH입니다.
내 도트 파일은 다음 위치에 있습니다.여기.
tmux 명령줄(접두사)에서 다음을 수행합니다.
set-environment PATH $PATH
PATH
변수를 설정 하고 실행 중에 표시합니다 show-environment
.
폴더 wifi_status
에 다시 복사하여 붙여넣어도 문제가 해결되지 않았습니다(tmux를 다시 시작해도)./usr/local/bin
스크립트의 전체 경로를 작성하는 것도 도움이 되지 않습니다.
문제를 해결했습니다. 어떤 이유로 사용자 정의 함수 파일이 올바르게 제공되지 않아 실행에 실패했습니다. 함수를 파일로 옮기면 문제가 해결되어 이제 작동합니다.
답변1
너를보고있는구성.zshrc
, include 에 여러 환경 변수를 설정 PATH
하지 마세요. 이 파일은 대화형 셸을 시작할 때 읽혀지므로 .zshrc
이 파일에 설정된 변수는 대화형 셸에서 시작된 프로그램에서만 사용할 수 있습니다. 다른 방법, 특히 GUI 메뉴에서 실행되는 프로그램에서는 사용할 수 없습니다.
tmux를 어떻게 시작했는지 말하지 않았습니다. 이러한 환경 변수는 대화형 셸 없이 시작하는 경우(예: 로그인 시간 파일에서 또는 대화형 프롬프트가 아닌 GUI 터미널 내에서 직접 입력하여 ) tmuxtmux 프로세스에서 설정되지 않습니다 .
환경 변수 정의를 로그인 시 실행되는 파일로 이동합니다. 실행되는 파일은 로그인 셸에 따라 다르며, GUI 로그인의 경우 배포 및 디스플레이 관리자에 따라 세션을 시작하기 위해 시스템이 어떻게 설정되어 있는지에 따라 다릅니다. 대부분의 설정은 로그인 시 쉘 코드를 실행하므로 ~/.profile
환경 변수 정의를 여기에 배치하세요.
로그인 셸이 bash인 경우 그렇지 않은지 확인하세요. ~/.bash_profile
그렇지 않으면 다음 두 줄만 포함됩니다.
. ~/.profile
if [[ $- = *i* ]]; then . ~/.bashrc; fi
로그인 셸이 zsh인 경우 ~/.zprofile
다음 줄을 포함해야 합니다.
emulate sh -c '. ~/.profile'
또는 대부분의 시스템에서 이 작업을 에서 수행할 수 있습니다 ~/.pam_environment
. 이 파일의 구문은 따옴표, 확장 등이 VARIABLE=VALUE
없이 간단합니다.$
자세한 내용은 다음을 참조하세요.환경 변수를 설정하는 가장 좋은 distro/shell 독립적 방법은 무엇입니까?