idea.sh端末で実行:

idea.sh端末で実行:

IntelliJ IDEAIDEを指すデスクトップ項目があります。実行中のスクリプトの先頭にDesktop Entryを追加したいと思います. ~/.bashrcidea.sh要点は、IDEAがSSH_AUTH_SOCKそこに定義された変更された環境変数を取得できなかったことです。だから. ~/.bashrc最初に非常に簡単なものを追加しましたが、idea.shソースコードが実行されていないことがわかりました。それでは、いくつかの詳細を見てみましょう。

私は~/.bashrcこれを持っています:

# Set GPG TTY
export GPG_TTY=$(tty)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi

# Refresh gpg-agent tty in case user switches into an X session
gpg-connect-agent updatestartuptty /bye >/dev/null

の先頭で実行したいが動作idea.sh. ~/.bashrcません。ただし、この正確なコードをの同じ場所に直接配置すると、idea.sh正常に動作します。

idea.sh調達は端末で直接実行しても機能します。 Desktop Entryを使用して実行した場合にのみ機能します。問題のデスクトップ項目は次のとおりです/home/luken/.local/share/applications/jetbrains-idea.desktop

[Desktop Entry]
Version=1.0
Type=Application
Name=IntelliJ IDEA Ultimate Edition
Icon=/home/luken/Programy/idea-IU-182.4505.22/bin/idea.svg
Exec="/home/luken/Programy/idea-IU-182.4505.22/bin/idea.sh" %f
Comment=Capable and Ergonomic IDE for JVM
Categories=Development;IDE;
Terminal=false
StartupWMClass=jetbrains-idea

結論として:

idea.sh端末で実行:

#!/bin/sh
#
# ---------------------------------------------------------------------
# IntelliJ IDEA startup script.
# ---------------------------------------------------------------------
#

. ~/.bashrc
echo "${SSH_AUTH_SOCK}" > ~/auth.txt

# ...

コンテンツauth.txt:/run/user/1000/gnupg/S.gpg-agent.ssh 正しい

idea.shデスクトップ項目のショートカットを使用して実行します。

#!/bin/sh
#
# ---------------------------------------------------------------------
# IntelliJ IDEA startup script.
# ---------------------------------------------------------------------
#

. ~/.bashrc
echo "${SSH_AUTH_SOCK}" > ~/auth.txt

# ...

コンテンツauth.txt:/run/user/1000/keyring/ssh 間違った

#!/bin/sh
#
# ---------------------------------------------------------------------
# IntelliJ IDEA startup script.
# ---------------------------------------------------------------------
#

# Set GPG TTY
export GPG_TTY=$(tty)

unset SSH_AGENT_PID
if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
  export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
fi

# Refresh gpg-agent tty in case user switches into an X session
gpg-connect-agent updatestartuptty /bye >/dev/null

echo "${SSH_AUTH_SOCK}" > ~/auth.txt

# ...

コンテンツauth.txt:/run/user/1000/gnupg/S.gpg-agent.ssh 正しい

ここで何が起こっているのか、またはデバッグする方法を知っている人はいますか?

ベストアンサー1

ファイル~/.bashrcは、入力するシェルが対話型であるかどうかを確認でき、後者の場合は、関連する指示を完了する前に返されることがあります。

たとえば、~/.bashrcUbuntu システムには、基本的に上部付近に次のコードがあります。

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

また、一部のシステムには、ファイルのすべての機能をサポートしていない他のシェル(シェルなど)が/bin/shあります。bashdash~/.bashrc

おすすめ記事