私のシェルはzsh
で、OSはUbuntu 13.04です
次の場所で機能するように、$ PATHにディレクトリを追加する必要があります。
gmrun
プログラムなど(基本的にalt + f2の「コマンドの実行」として).profile
に追加しましたが、最初の2つのポイントで機能しますが、最後のポイントでは機能しません。 .zshrc
に追加できることはわかっていますが、この場合は2つの場所に書き込まれ(DRYに違反します)、Unity内のターミナルの場合は$PATH
に2回表示されます( 「それは非常に悪いとは思わないが、少なくともきれいではない)
.zshrc
にのみ追加すると、2番目と3番目の場合にのみ機能します(明らかに)
私に何ができる?
この答えは、基本的にエリア・ケイガンの答えに基づいており、私が本当にやったことを含んでいます。
~/.pam_environment
に追加しました
PATH DEFAULT=${PATH}:/home/riad/scripts
しかし、少なくとも私のPCでは、tty1では解析されませんでした(Ctrl+Alt+F1)ログインしますが、グラフィカルログインで解析されました。 (Unityで作成されたロケール設定でさえ、非グラフィカルログインでは機能しませんでした)
その理由は、lightdm(/etc/pam.d/lightdm
)のPAM構成ファイルに次の行があったためです。
session required pam_env.so readenv=1 user_readenv=1 envfile=/etc/default/locale
/etc/pam.d/login
に同じ行を追加しました
@include common-session
そして
@include common-password
.pam_environment
ファイルにより、ログインが中断される場合があります。まず、.zshrcファイルで.profileを取得するだけです。
それに加えて、zshを使用しているときに、.zshrcに以下を追加できます。
typeset -U path
# If you want it at the front of your path
path=({/custom/path/bin "${path[@]}")
# If you want it at the end of your path
path+=(/custom/path/bin)
仕組み:
Zshでは、$PATH
変数は$path
変数にバインドされています。 $path
は配列であり、$PATH
は$path
の要素が:
(${(j|:|)path}
と同じ)で結合されたスカラーです。 typeset -U path
は、path
配列の要素(したがって、$PATH
)を一意にします。
typeset [ {+|-}AEFHUafghklprtuxmz ] [ -LRZi [ n ]] [ name[=value] ... ]
typeset -T [ {+|-}Urux ] [ -LRZ [ n ]] SCALAR[=value] array [ sep ]
Set or display attributes and values for Shell parameters.
(...)
-U For arrays (but not for associative arrays), keep only
the first occurrence of each duplicated value. This may
also be set for colon-separated special parameters like
PATH or FIGNORE, etc. This flag has a different meaning
when used with -f; see below.