脚本 /etc/profile.d/{script1}.sh 无法正常工作

脚本 /etc/profile.d/{script1}.sh 无法正常工作
cat /etc/profile.d/atlassian-plugin-sdk.sh
export PATH=$PATH:/opt/atlassian/plugin-sdk/bin
ls -al /etc/profile.d/atlassian-plugin-sdk.sh 
-rwxr-xr-x 1 root root 48 Apr 17 21:36 /etc/profile.d/atlassian-plugin-sdk.sh
ls -al /opt/atlassian/plugin-sdk/bin 
total 408
drwxr-xr-x 2 root root  4096 Apr 17 21:37 .
drwxr-xr-x 5 root root  4096 Apr 17 21:37 ..
-rwxr-xr-x 1 root root  3534 Apr 17 21:36 atlas-clean
-rwxr-xr-x 1 root root  3506 Apr 17 21:36 atlas-compile
-rwxr-xr-x 1 root root  8460 Apr 17 21:36 atlas-create-bamboo-plugin
-rwxr-xr-x 1 root root  5985 Apr 17 21:36 atlas-create-bamboo-plugin-module
.................................
  1. 该脚本应该如何/etc/profile.d/atlassian-plugin-sdk.sh工作?是我该称呼它吗每次,手动?或者是系统会以某种方式触发它?

    无论如何,终端中的 ,中没有任何文件/opt/atlassian/plugin-sdk/bin可见PATH

    但是,在我/etc/profile.d/atlassian-plugin-sdk.sh手动调用之后,甚至多次调用,都不会发生任何变化:

    echo $PATH
    ........... (`/opt/atlassian/plugin-sdk/bin` isn't here)
    
  2. 为什么?怎么了?

更新1:

我实际上使用的是zsh,而不是 bash 。然而,之后

sudo cp /etc/profile.d/atlassian-plugin-sdk.sh /etc/profile.d/atlassian-plugin-sdk.zsh

重新启动 shell 后,没有任何变化:该/opt/atlassian/plugin-sdk/bin目录尚未追加到PATHstill中

答案1

中的脚本/etc/profile.d/通常是/etc/profile在登录 bourne shell(例如 sh、bash)启动时获取的。如果您查看/etc/profile,您可能会看到类似这样的内容(从我的 Debian 系统上的 /etc/profile 复制):

if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

这将获取.sh/etc/profile.d/ 中的所有文件,以便它们在当前 shell 的环境中运行(并可以影响)。

zsh默认情况下不运行 /etc/profile(除非运行方式sh- 请参阅man zsh并搜索兼容性),因此也不执行 /etc/profile.d/ 中的脚本。如果您愿意,您可以编辑/etc/zsh/profile并使其来源,但 zsh 并不完全是 sh - 它基本上是兼容的,但是(具体取决于 /etc/profile.d/ 中的内容)可能会有一些奇怪的、意想不到的方面-效果。

如果您只想将 atlassian 目录添加到您的 PATH 中,那么将其添加到您的 PATH 中可能会更容易,~/.zshrc或者,如果您希望它适用于运行 zsh 的所有用户,则将其添加到 .zsh 中的启动文件之一可能会更容易/etc/zsh

相关内容