ログイン時に実行されるシェルスクリプトを作成する方法


16

Ubuntu 11.10 Linuxディストリビューションでbashシェルスクリプトを記述しようとしています。システムにログインすると自動的に実行されます。しかし、ログイン時に自動的に実行されるスクリプトで何を書くべきか理解できません。

回答:


18

グローバルにする場合は、変更します

 /etc/profile 

またはスクリプトを追加

 /etc/profile.d

ユーザー固有にする場合は、変更します

 /home/$USER/.profile

1
.shスクリプトを内に配置する場合、拡張機能が必要であることを忘れないでください/etc/profile.d/chmode +x /etc/profile.d/myscript.shもちろんです。
ブライアンハーク2017

Raspbian Stretch。/usr/local/bin/pihole -c特定のユーザーの自動ログインでコマンドを実行しようとしています。この行を追加しました/home/$USER/.profile-何も起こりません。スクリプトを追加すると機能しますが/etc/profile.d、グローバルであり、sshセッションを開いたときにも実行されます(これは私が望んでいることではありません)。への追加も.bashrc機能しますが、新しいシェルを開くたびに実行されます(これは私が望むものではありません)。質問:への追加/home/$USER/.profileが機能しないのはなぜですか?
ドリュー

3

スタートアップアプリケーションにbashスクリプトを追加するだけです。

コマンドフィールドに、

bash /full/path/to/bash/script.sh/

2
コマンドラインからスタートアップアプリケーションに「bash /.../script.sh」を追加するにはどうすればよいですか。
aleb 2013

1
OPはGUIについて言及していません。SSH経由でリモートサーバー上にあり、GUI がない場合はどうなりますか?質問に適用されたデスクトップタグはありません...
Doktor J

タイトルは、ログイン時に具体的に言及し、デスクトップGUIについては言及していません。
RichieHH

0

さらにbash固有になりたい場合は、〜/ .bash_profileまたは〜/ .bash_loginにコードを記述することもできます。

そして、あなたはそこに任意のスクリプトを調達することができます例えば:

if [ -f ~/.bashrc ]; then
   source ~/.bashrc
fi

0

/etc/profileまたは$HOME/.profileまたは$HOME/.bash_profile

/etc/profile.d/yourscript.sh出力を生成する場合は使用しないことを強くお勧めします。非インタラクティブセッションを使用すると、$TERM is not setメッセージが表示されます。これは、scpなどのsshプロトコルを使用する場合に顕著です。通常は大したことではありませんが、Veeamはそれを気に入らず、警告をスローします。Veeamはここでのトピックではありませんが、すべてのアプリケーションが$TERM is not set警告を優雅に無視するわけではないことは言及する価値があります。

つまり、スクリプトが出力を生成する場合は、最初の行で指定された場所に配置します。ただし、環境を変更していてスクリプトが出力を生成しない場合は、後者を使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.