Postgres.appのウェブサイトでこの素晴らしいトリックを見つけました。
echo /Users/user1/latest/bin | sudo tee /etc/paths.d/postgresapp
知りたいです。どうすればいいですか?どのログインしたユーザーです。私は次のようなものが欲しい
echo {whatever the home directory of the logged in user at runtime}/latest/bin | sudo tee /etc/paths.d/postgresapp
私の最初の考えはその変数を試すことでしたが、$HOME
私のhome変数は私のホームディレクトリを指し、すべてのユーザーがMacにログインしてTerminal.appを使用するときにこの変数が機能するようにしたいと思います。
答え1
実験を通して私が知っている限り、これを行うために使用することはできませんが、$HOME
他の方法があることが答えです。
HOME
現在のユーザーのパスが含まれているので(環境はプロセス固有であることを覚えておいてください)、行を$HOME/latest/bin
追加するときにパスを拡張せずにパスを含むファイルを作成するのは当然のことです。 (コマンドラインでecho '$HOME/blah...'
一重引用符を使用する場合。)
その後、シェルがこれらのファイルを読み込んでパスを設定したときにそのコンテンツを挿入できるようにしたいと思います。ただし、path-helper
使用されているツールが/etc/paths.d
ドル記号を超えているように見えるため、これは機能しません。
$ cat /etc/paths.d/test
$HOME/test
$ PATH="" /usr/libexec/path_helper -s
PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:\$HOME/test"; export PATH;
したがって、パスに文字通りドル記号が表示されます。
Bashにのみ興味がある場合は、チルダ(~
)を代わりに使用できます$HOME
。エスケープされず、引用されることがあります。しかし、soPATH
では動作しないため、一般的な解決策ではありません。ksh
zsh
/etc/profile
代わりに(または/etc/zprofile
. zsh
)ディレクトリを手動で追加できます。
私のシステムでは、/etc/profile
このコードスニペットは以下に指定されたパスを設定しますpath_helper
。
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
PATH
ファイルのどこかに割り当てを追加します。
PATH="$HOME/latest/bin:$PATH"
その行をへの呼び出しの後に置くと、ディレクトリはセクションの先頭にあり、前に置くとpath_helper
結果パスの終わりに移動するように見えます。path_helper
path_helper
答え2
echo '$HOME/latest/bin' | sudo tee /etc/paths.d/postgresapp