72

私はかつてこれを行う方法を知っていましたが... unixでのログイン時にスクリプト(bashはOK)をどのように実行しますか?

4

11 に答える 11

114

ウィキペディアから

Bash が起動すると、さまざまなスクリプトでコマンドが実行されます。

Bash が対話型ログイン シェルとして呼び出されると、最初にファイル /etc/profile からコマンドを読み取り、実行します (そのファイルが存在する場合)。そのファイルを読み取った後、~/.bash_profile、~/.bash_login、および ~/.profile をこの順序で検索し、最初に存在して読み取り可能なコマンドからコマンドを読み取って実行します。

ログイン シェルが終了すると、Bash はファイル ~/.bash_logout (存在する場合) からコマンドを読み取り、実行します。

ログイン シェルではないインタラクティブ シェルが開始されると、Bash は ~/.bashrc ファイルが存在する場合はそこからコマンドを読み取り、実行します。これは、 --norc オプションを使用することで抑制できます。--rcfile file オプションを指定すると、Bash は ~/.bashrc ではなくファイルからコマンドを読み取って実行するようになります。

于 2008-09-18T21:29:02.403 に答える
30

ログイン時に、ほとんどのシェルは、カスタム スクリプトの実行に使用できるログイン スクリプトを実行します。シェルが実行するログイン スクリプトは、もちろんシェルに依存します。

  • bash: .bash_profile、.bash_login、.profile (後方互換性のため)
  • sh: .profile
  • tcsh および csh: .login
  • zsh: .zshrc

おそらく、次のようにして、使用しているシェルを見つけることができます

echo $SHELL

プロンプトから。

「ログイン」のもう少し広い定義については、X の起動時にほとんどのディストリビューションで、X セッションの開始時に .xsessionrc が実行されることを知っておくと便利です。

于 2008-09-18T22:10:42.083 に答える
10

Bash を使用する場合、最初の~/.bash_profile~/.bash_login~/.profile対話型ログイン シェルに対して実行されます。~/.profile通常、Bash 以外の Unix シェルで実行されると思います。Bash は~/.bashrc非ログイン インタラクティブ シェルに対して実行されます。

私は通常、常に設定したいものをすべて入れ.bashrcて から実行します。また.bash_profile、 の設定ssh-agentや実行など、ログインしているときにのみ実行する必要があるものもいくつか設定しますscreen

于 2008-09-18T21:33:54.480 に答える
5

スクリプトを1だけ実行したい場合は、そのユーザーのデフォルト シェルにすることができます。

echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd  
  * username:x:uid:grp:message:homedir:/usr/bin/uptime

興味深い効果をもたらす可能性があります:)(安全ではないので、あまり信頼しないでください。デフォルトのシェルをドライブを消去するスクリプトに設定するようなものではありません。...しかし、..驚くほど便利です)

于 2008-09-18T21:34:55.320 に答える
3

bash プロファイルに配置します。

~/.bash_profile
于 2008-09-18T21:25:50.507 に答える
3

OSX を使用している場合は、~/.profile

于 2008-09-18T21:26:44.217 に答える
3

私はこの問題に何日も悩まされました。ubuntuでは何も機能しませんでした。/etc/profile に呼び出しを入れると、ログイン試行時にすべてクラッシュしました。「スタートアップアプリケーション」は、私が望んでいたものではなかったため、使用できませんでした。これは、その現在のユーザーのスクリプトのみを設定します。

最後に、この小さな記事を見つけました: http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html

解決策は次のとおりです。

  1. $XDG_CONFIG_DIRS パスを見つけます。

    echo $XDG_CONFIG_DIRS

  2. スクリプトをそのディレクトリに配置します

于 2015-04-29T11:27:23.343 に答える
3

LaunchdOS Xで推奨される方法です。

ログイン時に実行したい場合は、それを入れてください~/Library/LaunchAgents

開始launchd項目

launchctl load /Library/LaunchDaemons/com.bob.plist

ストップアイテム

launchctl unload /Library/LaunchDaemons/com.bob.plist

com.bob.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bob</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/java</string>
<string>-jar</string>
<string>/Users/user/program.jar</string>
</array>
</dict>
</plist>
于 2008-09-19T14:06:32.807 に答える
2

起動時にどのファイルが読み込まれるかについては、ローカル システムの bash man ページで ^INVOCATION を検索してください。

man bash
/^INVOCATION

また、FILES セクションでは、

   ~/.bash_profile
          The personal initialization file, executed for login shells
   ~/.bashrc
          The individual per-interactive-shell startup file

スクリプトを適切なファイルに追加します。スクリプトが $PATH にあることを確認するか、スクリプト ファイルへの絶対パスを使用します。

于 2008-09-19T00:24:46.457 に答える
2

/etc/profileスクリプトを実行するエントリを追加します。これは、ログオンするたびに実行されます。これを自分のアカウントに対してのみ行っている場合は、ログイン スクリプトの 1 つ (例: .bash_profile) を使用して実行します。

于 2008-09-18T21:44:24.830 に答える
1

スクリプト~/.bash_profileはログイン時に実行されます。

于 2008-09-18T21:24:53.130 に答える