Ticket #152 (closed 不具合: fixed)

Opened 3 years ago

Last modified 1 year ago

環境変数LOGNAMEを定義しているとloadupに失敗する

Reported by: anonymous Assigned to: gotoh
Priority: minor Milestone: ver 3.00
Component: Emacs Lisp Version: 3.00 (開発中)
Keywords: Cc:

Description

環境変数LOGNAMEを定義した状態で meadowを起動すると、loadup.elで以下のエラーを吐く。

Error (initialization): User hoge has no home directory

環境変数HOMEは別途設定済みです。 ※LOGNAMEはRCSで使っているので、「そんなもん設定するな」は勘弁してください。

Attachments

Change History

2005年09月16日 00時14分14秒 changed by gotoh

私も昔からLOGNAMEは設定していますが、問題は出ていません。 meadow3のビルド&実行でも特に。 loadup.el ということはdump時の話のように思えるのですが、 どのようにしてインストールしましたか? netinstall? 自力でビルド? 適切にインストールしてあれば、以下のレジストリにHOME等の値が設定されていると思いますが、 その値はどのようになっていますか?

HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Meadow\3.00\Environment

もし設定がないのであれば、install.exeを実行していないとかいうことはないでしょうか?

2005年09月16日 02時16分10秒 changed by anonymous

インストールはネットインストールを使っています。その後コマンドラインからinstall.exe を実行しました。

LOGNAMEですが、もう少し説明します。 私の環境ではログインユーザー名が数字(社員番号)なのですが、LOGNAMEには英字名(自分の名字のローマ字表記)を設定して使っています。(つまりログインユーザー名と一致していない。) この状態でRunMW32.exeを実行するとこのエラーが発生します。LOGNAMEをログインユーザー名と一致させ、再びRunMW32.exeすると正常に起動します。

※Meadow2.0ではこのエラーは発生せず、ふつうに使えていました。

2005年09月16日 10時20分57秒 changed by anonymous

loadup.el ではなくて startup.el ですね. 警告は出ますが起動はします. meadow -user <ログインユーザー名> とするとエラーは出なくなると思います..

逆に meadow -user nonexistentuser とやるとこのエラーを強制的に出すことができます.

2005年09月16日 10時48分32秒 changed by gotoh

  • owner set to gotoh.
  • status changed from new to assigned.
  • milestone set to ver 3.00.

LOGNAME=gggという設定で起動すると、

(user-login-name)
=> "ggg"

(user-real-login-name)
=> "gotoh"

となります。この違いにより、startup.elではsuした状況とみなすのか、 init-file-userとしてgggを採用し、結果~ggg/.emacsを読もうとするため、件の症状となるようです。 startup.el:660あたりでその判断をしています。

(user-login-name)"ggg"を返す値が環境変数LOGNAMEに影響されるのが 適切か否かを判断する必要がありますね。

2005年09月16日 23時23分56秒 changed by gotoh

[meadow-develop:6834]でも検討中ですが、この問題はオリジナルEmacs/NTEmacsでも存在するものです。 どういう結論になるかはわかりませんが、とりあえずは -user オプションで回避しておいてください。 それではうまくいかないようなら、meadow起動用のバッチファイルを作り unset LOGNAMEして起動して.emacsにて再設定するか、 逆にシステムの環境変数としてLOGNAMEは指定せず、 .emacsおよびcmd.exeのスタートアップでLOGNAMEを設定する、という回避方法もあるでしょう。

UNIXにおけるLOGNAMEは本来は仮名/別名ではなく実際にログインしているユーザ名が格納されているはずの変数なので、 一番良いのはログイン名をLOGNAMEで指定している名前と一致させることでしょう。 RCS以外でもLOGNAMEを前提としているものがありますし、 それをアカウント名として使用するものもあるかも知れませんから、 そうしておくのが一番問題が少ない。 とはいえ組織の都合などで出来ないかもしれませんが。

2005年09月18日 05時09分19秒 changed by anonymous

-user指定で回避できました。どうもありがとうございました。

UNIXにおけるLOGNAMEは本来は仮名/別名ではなく実際にログインしているユーザ名が格納されているはずの変数なので、 一番良いのはログイン名をLOGNAMEで指定している名前と一致させることでしょう。

はい、あまりまともな方法ではないのは承知しています。 昔の仕事の関係でRCSを使うことが多いのですが、RCSでは全部数字のユーザー名を使うと はじかれてしまうため、回避策としてLOGNAMEだけ変えてしのいでいます。

2007年07月12日 19時01分06秒 changed by kose

  • status changed from assigned to closed.
  • resolution set to fixed.

使い方(特定個人環境)によるもの。回避策あり。なのでcloseします。


Add/Change #152 (環境変数LOGNAMEを定義しているとloadupに失敗する)




Change Properties
Action