BROWSER 변수에 매개변수를 넣는 방법은 무엇입니까?

BROWSER 변수에 매개변수를 넣는 방법은 무엇입니까?

나는 그렇게 할 수 있는 것을 좋아합니다 export BROWSER="lynx -cfg=~/.lynx.cfg". 직접 시도하고 별칭 설정도 시도했지만 alias lynx="lynx -cfg=~/.lynx.cfg"아무 것도 작동하지 않았습니다. (이 변수를 사용하여 브라우저를 시작하는 도구는 여전히 내 프로필을 무시하거나 브라우저를 전혀 시작하지 않는다는 의미입니다.)

답변1

$BROWSER많은 유틸리티에서 귀하의 웹 브라우저를 선택하는 것으로 간주합니다.

유틸리티에 따라 다음이 포함될 것으로 예상됩니다.

  1. 실행 파일의 경로 또는 이름
  2. 첫 번째 단어는 경로 또는 이름이고 다른 단어는 초기 인수 목록인 단어 목록입니다. 운이 좋다면 쉘이 수행하는 것과 유사한 어떤 형태의 인용도 이해할 수 있습니다.
  3. (매우 가능성이 낮고 현명하지 못함) 쉘 명령줄의 시작입니다.

첫 번째 상황에 처해 있는 경우 사용하려는 유틸리티가 존재하지 않는 "lynx -cfg=~/.lynx.cfg"명령에 대해 불평할 것으로 예상됩니다.

~세 번째 경우 에는 쉘이 -cfg=~/.lynx.cfg. zsh이 작업은 이 옵션이 활성화된 경우에만 수행됩니다 . a는 a의 왼쪽 내용이 유효한 변수 이름처럼 보이고 POSIX 모드가 아닌 경우에만 확장됩니다.magicequalsubstbash~==

그러나 lynx(내 시스템의 버전 ​​2.8.9dev.16 이상)은 ~그 자체를 홈 디렉토리로 이해하는 것 같으므로 홈 디렉토리가 2등급 및 3등급 유틸리티에서 작동할 것으로 기대합니다.

$ BROWSER='echo -cfg=~' sensible-browser foo
-cfg=~ foo

따라서 귀하의 브라우저는네번째Category는 첫 번째 단어를 제외한 모든 것을 무시하거나 브라우저에 그 의미를 묻는 메시지를 표시합니다. 또는 귀하의 버전은 "home"이 무엇을 의미하는지 lynx이해하지 못합니다 .~

유틸리티를 실행하여 strace -fe execve the-utility수행하려는 작업을 확인하십시오.

귀하의 버전이 제품군으로 간주 lynx되지 않는 경우 다음과 같이 정의할 수 있습니다.~$BROWSER

export BROWSER="lynx -cfg=$HOME/.lynx.cfg"

( $HOME공백이나 따옴표(또는 기타 쉘 관련 문자)가 없다고 가정)

$BROWSER어쨌든 다음과 같이 올바른 매개변수를 에 전달하는 스크립트를 정의할 수 있어야 합니다 lynx.

#! /bin/sh -
exec lynx -cfg="$HOME/.lynx.cfg" "$@"

그리고 그것을 당신의 $BROWSER.

그건 그렇고, $HOME캐릭터로 시작한다면 어리석은 일이 될 것입니다. 그래서 이러한 캐릭터를 개별적으로 다루는 것은 좋은 생각이 아닙니다.~lynxlynx~

답변2

나는 당신이 할 수 없다고 생각하지만, 시도해 볼 수 있습니다:

절대 경로를 사용해야 합니다.

export BROWSER='/home/username/lynx.sh'

홈 디렉터리에 새 파일 lynx.sh를 만듭니다.

#!/bin/bash
linx -cfg=/home/username/.lynx.cfg

실행 가능하게 만드세요.

그 다음에:

Launching Browser should launch lynx.
or
./lynx.sh

및/또는:

유형:

whereis lynx

다음 단계에서 사용됩니다.

bash_aliases 편집:

lynx.cfg의 절대 경로를 사용해야 합니다.
lynx의 절대 경로를 사용해야 합니다(/usr/bin/에 없는 경우).

alias=lynx='/path/to/lynx -cfg=/home/username/.lynx.cfg'

경로에 특수 문자가 포함된 경우 ""를 사용해야 합니다.

관련 정보