답변:
이 스크립트는 tree...
sudo apt-get install tree 변경하여 디렉토리의 깊이를 변경할 -L 1
수 있으며 사용할지 여부를 선택할 수 있습니다 ~/...
업데이트 2 :
.. 선행 / home / user / ( "any"아님) 만 바꾸도록 스크립트를 수정하고
인수를 추가했습니다.
업데이트 추가 확인 : .. 이미 PATH에있을 때 PATH에 디렉토리를 추가하지 마십시오.이 점검은 '~ /'와 '/ home / user /'가 다른 것으로 간주합니다.
질문 1을 다시하십시오 ... 그렇습니다. 각 특정 디렉토리는 PATH에서 개별적으로 가속화되어야합니다.
질문 2 다시 ... 여기에 원하는 것을 할 수있는 스크립트가 있습니다.
테스트 해 보았지만 현재 세션의 새 경로
를 만듭니다. 영구적으로 사용하려면 export PATH(그러나 나는 export) 의 세부 사항에 대해 약간 스케치합니다.
#
# name: path-add-dirs
# eg: $ path-add-dirs "$HOME/bin" "tilde" 1
# When directories are $HOME based, choose format.
# Add directories in tidle format: ~/...
# ...or as fullly-qualified: /home/user/...
# mode values: "tilde", or anything else for fully-qualified
mode="$2" # valid mode values: "tilde", or anything else
maindir="$1"; dirs= ; echo
# Buld string of subdirectories to a depth/level of 1
while IFS= read -r dir ; do
# Don't add directory if it is already in PATH
if [[ "$mode" == "tilde" ]] ; then
# replace only a *leading* :/home/user/
homecheck=":$dir"
dircheck="${homecheck/:$HOME\//:~/}"
dircheck="${dircheck#:}"
else
dircheck="${dir}"
fi;
pathcheck=":$PATH:"
if [[ "$pathcheck" != "${pathcheck/:$dircheck:/}" ]] ; then
echo "ALREADY IN PATH: $dircheck"
else
dirs="$dirs:$dir"
echo " added: $dircheck"
fi
done < <(tree --noreport -L $3 -fi -d "$maindir")
# Choose one of these two options
if [[ "$mode" == "tilde" ]]
then PATH="$PATH${dirs//:$HOME\//:~/}" # change :$HOME to :~/
else PATH="$PATH$dirs" # this method has fully expanded $HOME
fi
echo
echo "$PATH"
echo
UNIX 기반 시스템은 그렇게 작동하도록 설계되지 않았기 때문에 불가능합니다. 일반적으로 모든 실행 파일은 적은 수의 디렉토리 중 하나에 들어갑니다. 예를 들어, 내가 직접 작성하는 모든 내용은 ~ / bin에 들어갑니다.
실제 바이너리와 스크립트를 bin 디렉토리에 저장하지 않으려면 실제 바이너리에 ~ / bin과 같은 심볼릭 링크를 만들 수 있습니다.
$ PATH에 모든 하위 디렉토리를 갖는 것은 검색에 더 많은 디렉토리를 추가하고 다른 실행 파일이 PATH에 없어야하는 위험을 증가시키고 실제로 많은 이점을 제공하지 않기 때문에 바람직하지 않습니다.
이것은 일을해야한다
PATH="$PATH:$(find ~/bin -type d -printf ":%p")"
그것을 고려하십시오
이 방법으로 시도하십시오 :
export PATH="$PATH:$(du "$HOME/.local/bin/" | cut -f2 | tr '\n' ':' | sed 's/:*$//')"
이것 ~/.local/bin으로 모든 하위 디렉토리와 함께 추가 됩니다 $PATH.
설명:
du 모든 하위 디렉토리 정보를 각 줄에 표시합니다 cut -f2 두 번째 열, 즉 하위 디렉토리의 이름을 추출합니다. tr '\n' ':'각 링크 나누기를 콜론으로 변경합니다. 이것은 모든 행을 단일 행으로 결합하고 하위 디렉토리는 콜론으로 구분됩니다. sed 's/:*$//' 마지막 결장을 제거합니다