私はこれを行う方法を一度知っていますが、... UNIXでのログイン時にどのようにスクリプトを実行しますか(bashは大丈夫ですか)?
Bashが起動すると、さまざまな異なるスクリプトでコマンドを実行します。
Bashが対話型ログインシェルとして呼び出されると、最初にファイル/ etc/profileが存在する場合、そのファイルからコマンドを読み取って実行します。そのファイルを読み取った後、〜/ .bash_profile、〜/ .bash_login、および〜/ .profileをこの順序で検索し、最初に存在する読み取り可能なコマンドからコマンドを読み取り、実行します。
ログインシェルが終了すると、Bashは〜/ .bash_logoutが存在する場合、ファイルからコマンドを読み取って実行します。
ログインシェルではないインタラクティブシェルが起動されると、Bashは〜/ .bashrcからコマンドを読み取り、実行します(そのファイルが存在する場合)。 --norcオプションを使用すると、これを禁止できます。 --rcfileファイルオプションは、Bashに〜/ .bashrcではなくfileからコマンドを強制的に読み取らせて実行させます。
ログイン時に、ほとんどのシェルはログインスクリプトを実行します。これを使用してカスタムスクリプトを実行できます。シェルが実行するログインスクリプトは、もちろんシェルによって異なります。
あなたはおそらくあなたが使っているシェルを見つけることができます
echo $Shell
プロンプトから。
「ログイン」の定義を少し広くするには、Xの起動時にほとんどのディストリビューションで、Xセッションの開始時に.xsessionrcが実行されることを知っておくと便利です。
Bashを使用する場合、~/.bash_profile
、~/.bash_login
、および~/.profile
の最初のものが対話型ログインシェルに対して実行されます。 ~/.profile
は通常、Bash以外のUnixシェルによって実行されると思います。 Bashは、非ログインの対話型シェルに対して~/.bashrc
を実行します。
私は通常、常に設定したいものをすべて.bashrc
に入れてから.bash_profile
から実行します。また、ssh-agent
のセットアップやscreen
の実行など、ログインしているときにのみ実行するいくつかの設定も行います。
one scriptおよびonly 1つのスクリプトを実行する場合は、ユーザーにデフォルトのシェルを設定できます。
echo "/usr/bin/uptime" >> /etc/shells
vim /etc/passwd
* username:x:uid:grp:message:homedir:/usr/bin/uptime
面白い効果があります:)(安全ではありませんので、あまり信用しないでください。デフォルトのシェルをドライブを消去するスクリプトに設定するようなものはありません。..しかし、..驚くほど役に立つかもしれません)
この問題に何日もイライラしていました。 Ubuntuでは何も機能しませんでした。/etc/profileに呼び出しを入れると、ログイン試行時にすべてクラッシュしました。 「スタートアップアプリケーション」を使用することはできませんでした。これは、その現在のユーザーのスクリプトのみを設定します。
最後に、この小さな記事を見つけました: http://standards.freedesktop.org/autostart-spec/autostart-spec-0.5.html
解決策は次のとおりです。
$ XDG_CONFIG_DIRSパスを見つけます。
echo $ XDG_CONFIG_DIRS
そのディレクトリにスクリプトを置きます
bash profile に配置します:
~/.bash_profile
OSXを使用している場合は、~/.profile
Launchd
はOS 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>
ローカルシステムのbashのマニュアルページで^ INVOCATIONを検索し、起動時にどのファイルを読み込むかについての情報を取得します。
man bash
/^INVOCATION
FILESセクションでも、
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-Shell startup file
適切なファイルにスクリプトを追加します。スクリプトが$ PATHにあることを確認するか、スクリプトファイルへの絶対パスを使用します。
スクリプトを実行する/etc/profile
にエントリを追加します。これは、すべてのログオン中に実行されます。自分のアカウントに対してのみこれを行う場合は、ログインスクリプトのいずれか(たとえば.bash_profile
)を使用して実行してください。
スクリプト ~/.bash_profile
はログイン時に実行されます。