ファイルのPATH変数は私が見ることができるようにかなり長いので、読みやすくするために複数行に分割しました。ここ。これが私が変えたものです/etc/profile
:
# PATH="/usr/share/python-wheels:/usr/share/gcc/python/usr/lib/python3/dist-pa>
# PATH="/usr/share/doc:/usr/lib/python3:/usr/lib/python3/dist-packages:/usr/lib/cups/backend:usr/lib/python3.11:/usr/src/python3.11:/sbin:/bin"
path+=(
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
/home/lm/local/pipx/venvs/esptool
/usr/share/python-wheels
/usr/share/gcc/python
/usr/lib/python3/dist-packages/pip/_vendor/pygments/lexers
/usr/share/doc
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/cups/backend
/usr/lib/python3.11
/usr/src/python3.11
/sbin
/bin
)
export PATH
それから私は走った。
source ~/.profile
何もecho $PATH
変わりませんでした。
root@debian:/home/lm# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/lm/.local/bin:/root/.local/bin:/root/.local/bin:/root/.local/bin:/root/.local/bin:/root/.local/bin
root@debian:/etc/default# source /etc/profile
root@debian:/etc/default# echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/lm/.local/bin:/root/.local/bin
PATHは、XFCEが再起動または再起動された後もデフォルトのままです。
問題は何であり、新しいPATH設定が許可されるようにこの問題をどのように解決できますか?
私のシステムはDebian 12とXFCEです。
ベストアンサー1
まず、bashを使用するとpath
問題になりません。 BashのみPATH
。これで、読みやすくするためにシェル構成ファイルをフォーマットするには、次のようにします。
path_dirs=(
/usr/local/bin
/usr/bin
/bin
/usr/local/games
/usr/games
/home/lm/local/pipx/venvs/esptool
/usr/share/python-wheels
/usr/share/gcc/python
/usr/lib/python3/dist-packages/pip/_vendor/pygments/lexers
/usr/share/doc
/usr/lib/python3
/usr/lib/python3/dist-packages
/usr/lib/cups/backend
/usr/lib/python3.11
/usr/src/python3.11
/sbin
/bin
)
for path in "${path_dirs[@]}"; do
PATH="$PATH:$path"
done
export PATH
path_dirs
これは、必要なものを格納する配列を作成し、配列を繰り返し、PATH
各項目をPATH
。
ディレクトリにスペースが含まれている場合は、引用符で囲む必要があります。
path_dirs=(
...
"/some/path/with a space/"
...
)
また、名前に改行文字を含むディレクトリを追加することはできませんが、私が知っている限り、とにかくそれを行うことはできません。
pathmunge
最後に、Red Hat / Fedoraシステムで提供されている同様の機能を使用したい場合があります。とにかく約20年間使ってきましたが、~/.profile
とても便利です。
pathmunge () {
if ! echo $PATH | /bin/grep -Eq "(^|:)$1($|:)" ; then
if [ "$2" = "after" ] ; then
PATH=$PATH:$1
else
PATH=$1:$PATH
fi
fi
}
この関数はパスにすでに何かがあるかどうかを確認し、そうでない場合は変数の先頭または末尾に追加しますPATH
。関数をファイルに貼り付けて、~/.profile
次を実行できます。
## add a directory to the beginning of the path (prepend)
pathmunge /some/dir after
## add a directory to the end of the path (append)
pathmunge /some/dir
つまり、次~/.profile
のように変更できます。
for path in "${path_dirs[@]}"; do
pathmunge "$path" after
done