![脚本 /etc/profile.d/{script1}.sh 无法正常工作](https://linux22.com/image/204804/%E8%84%9A%E6%9C%AC%20%2Fetc%2Fprofile.d%2F%7Bscript1%7D.sh%20%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
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
.................................
该脚本应该如何
/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)
为什么?怎么了?
更新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
目录尚未追加到PATH
still中
答案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
。