
나는 다음을 시도했습니다 :
export PATH=>>-
$HOME/.cargo/bin:
$HOME/.bkaradzic/bx/tools/bin/linux:
$HOME/.bkaradzic/bimg/tools/bin/linux:
$HOME/.dotnet:
$HOME/.android-ndk-r17b:
$PATH
export PATH=${PATH//$'\r'/}
export PATH=${PATH//$'\n'/}
export PATH=${PATH//$'\x20'/}
여전히
-bash: /home/hydroper/.cargo/bin:: No such file or directory
-bash: /home/hydroper/.bkaradzic/bx/tools/bin/linux:: No such file or directory
-bash: /home/hydroper/.bkaradzic/bimg/tools/bin/linux:: No such file or directory
-bash: /home/hydroper/.dotnet:: No such file or directory
-bash: /home/hydroper/.android-ndk-r17b:: No such file or directory
어떤 제안이 있으십니까?
답변1
첫 번째 줄이 경로 확장을 시작할 것이라고 생각하는 것 같습니다. 이것은 사실이 아닙니다. 첫 번째 줄은 완전한 명령입니다.
export PATH= >> -
더 나은 이해를 위해 약간의 공백을 사용하여 작성된 위의 줄은 를 빈 문자열로 설정 PATH
하고 명령의 출력을 파일에 추가합니다 -
.
다음 줄은 다음 명령입니다.
$HOME/.cargo/bin:
이는 시스템에 존재할 가능성이 있는 디렉토리 이름과 콜론으로 확장됩니다. 결과는
-bash: /home/hydroper/.cargo/bin:
: 해당 파일이나 디렉터리가 없습니다.
답변2
다음과 같은 것을 원하는 것 같습니다.
export PATH="$(paste -sd : - << EOF
$HOME/.cargo/bin
$HOME/.bkaradzic/bx/tools/bin/linux
$HOME/.bkaradzic/bimg/tools/bin/linux
$HOME/.dotnet
$HOME/.android-ndk-r17b
$PATH
EOF
)"
paste -s
파일의 모든 행을 결합하는 명령입니다( -d
; 와 함께 제공되는 구분 기호 -
사용 ).실제 파일 대신 stdin에 대해 수행하십시오., -
일부 구현에서는 생략할 수 있지만 표준/이식 가능하지는 않습니다.
공백 제거에 대한 질문에 대답하려면 ksh93
/ mksh
또는 다음을 수행 bash
하십시오 zsh
.
PATH=${PATH//[[:space:]]}
개행 문자를 포함하여 ASCII 문자를 포함한 모든 공백 문자를 제거합니다. 일치하는 문자 목록은 로케일과 시스템에 따라 다르지만(예를 들어 모든 시스템에 줄바꿈 방지 공백이 포함되는 것은 아닙니다) 모든 ASCII 문자(TAB, LF, VT, FF, CR, SPC)는 항상 포함됩니다.
$PATH
처음에 해당 개행 문자를 가져오려면 다음이 필요했습니다.
export PATH="
$HOME/.cargo/bin:
$HOME/.bkaradzic/bx/tools/bin/linux:
$HOME/.bkaradzic/bimg/tools/bin/linux:
$HOME/.dotnet:
$HOME/.android-ndk-r17b:
$PATH"
>>
출력 리디렉션 연산자이므로 <<
또는 <<-
here-doc 연산자와 혼동될 수 있습니다. 그러나 그럼에도 불구 <<
하고 입력을 리디렉션해야 하므로 위의 예 <<-
와 같이 입력을 읽는 명령에 이를 사용해야 하며 해당 명령의 출력이 전달되도록 명령 대체(위 예에서)를 사용해야 합니다. 에 대한 인수로 .paste
$(...)
export
다음을 수행할 수도 있습니다.
export PATH="\
$HOME/.cargo/bin:\
$HOME/.bkaradzic/bx/tools/bin/linux:\
$HOME/.bkaradzic/bimg/tools/bin/linux:\
$HOME/.dotnet:\
$HOME/.android-ndk-r17b:\
$PATH"
큰따옴표 안에(그리고 확장하려면 큰따옴표가 필요함 ) 줄 끝에서 긴 따옴표를 구분하는 데 $HOME
사용할 수 있습니다.\
논리적여러 줄로 늘어서다물리적인 것. $PATH
~일 것이다~ 아니다개행 문자를 포함하면 \<newline>
시퀀스가 제거됩니다.
또는 확장된( 과제에 있는 경우 ~
포함 ) 외부 따옴표 도 제거됩니다.:
\<newline>
PATH=\
~/.cargo/bin:\
~/.bkaradzic/bx/tools/bin/linux:\
~/.bkaradzic/bimg/tools/bin/linux:\
~/.dotnet:\
~/.android-ndk-r17b:\
$PATH
export PATH
( 를 사용하면 여기서도 작동하지만 다른 모든 쉘에서는 작동하지 않습니다) bash
.export PATH=...
에서는 zsh
다음을 수행할 수 있습니다.
path=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
$path
)
또는
path[1,0]=(
~/.cargo/bin
~/.bkaradzic/bx/tools/bin/linux
~/.bkaradzic/bimg/tools/bin/linux
~/.dotnet
~/.android-ndk-r17b
)
에서와 같이 배열은 다음과 같습니다 zsh
.$path
묶여$PATH
in csh
또는 과 같은 변수 에 tcsh
.